/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
Ikke-obligatorisk match i regexp?
Fra : Steen Suder


Dato : 09-11-05 11:12

Lad os sige at jeg har denne her stump:

if ( m/^(\d)\;(\d+\.\d+\.\d+\.\d+)$/ )
{
$nummer = $1;
$IP = $2;
print "$nummer har adressen $IP.\n";
};

Den første backref ($1) skal altid matches. Hvis ikke det kan det, skal
hele udtrykket blive false.
Den næste backref skal være optional, dvs. at HVIS der står noget
imellem '\;' og $ som matcher udtrykket, så skal det "havne i" $2.
Hele udtrykkets sandhedsværdi (?) skal ikke påvirkes af den sidste
backref ($2).

Hvordan gør man det?

NB
Jeg ved godt at udtrykket for adressen kunne være "strammere"

--
Steen Suder
Prøv at forestille dig, at du er en anden, og læs så din artikel igennem
inden du sender den. Alle har interesse i, at du staver og formulerer
dig, så godt du kan. På den måde forstås det lettere, hvad du skriver.

 
 
Carsten Mathiasen (09-11-2005)
Kommentar
Fra : Carsten Mathiasen


Dato : 09-11-05 11:39

Prøv at se i doc'en: "perldoc perlre". Her finder du bl.a.:

The following standard quantifiers are recognized:

* Match 0 or more times
+ Match 1 or more times
? Match 1 or 0 times
{n} Match exactly n times
{n,} Match at least n times
{n,m} Match at least n but not more than m times

Du bruger i forvejen + til 1 eller flere digits, og her er du nok
interesseret i en * efter parantesen med IP nummeret.

Carsten Mathiasen

On Wed, 09 Nov 2005 11:12:20 +0100, Steen Suder <sfs_news_spam@suder.dk>
wrote:

> Lad os sige at jeg har denne her stump:
>
> if ( m/^(\d)\;(\d+\.\d+\.\d+\.\d+)$/ )
> {
> $nummer = $1;
> $IP = $2;
> print "$nummer har adressen $IP.\n";
> };
>
> Den første backref ($1) skal altid matches. Hvis ikke det kan det, skal
> hele udtrykket blive false.
> Den næste backref skal være optional, dvs. at HVIS der står noget
> imellem '\;' og $ som matcher udtrykket, så skal det "havne i" $2.
> Hele udtrykkets sandhedsværdi (?) skal ikke påvirkes af den sidste
> backref ($2).
>
> Hvordan gør man det?
>
> NB
> Jeg ved godt at udtrykket for adressen kunne være "strammere"
>


Steen Suder (09-11-2005)
Kommentar
Fra : Steen Suder


Dato : 09-11-05 11:52

Carsten Mathiasen wrote:

<KLIP>

> Du bruger i forvejen + til 1 eller flere digits, og her er du nok
> interesseret i en * efter parantesen med IP nummeret.

Der er mange træer i min skov

<KLIP>

--
Steen Suder
Prøv at forestille dig, at du er en anden, og læs så din artikel igennem
inden du sender den. Alle har interesse i, at du staver og formulerer
dig, så godt du kan. På den måde forstås det lettere, hvad du skriver.

Peter Makholm (09-11-2005)
Kommentar
Fra : Peter Makholm


Dato : 09-11-05 11:39

Steen Suder <sfs_news_spam@suder.dk> writes:

> Den næste backref skal være optional, dvs. at HVIS der står noget
> imellem '\;' og $ som matcher udtrykket, så skal det "havne i" $2.

Hvis noget skal matche 0 eller 1 gang bruger man modifieren '?'.

--
Peter Makholm | One thing you do is prevent good software from
peter@makholm.net | being written. Who can afford to do professional
http://hacking.dk | work for nothing?
| -- Bill Gates

Steen Suder (09-11-2005)
Kommentar
Fra : Steen Suder


Dato : 09-11-05 11:54

Peter Makholm wrote:

> Steen Suder <sfs_news_spam@suder.dk> writes:
>
>> Den næste backref skal være optional, dvs. at HVIS der står noget
>> imellem '\;' og $ som matcher udtrykket, så skal det "havne i" $2.
>
> Hvis noget skal matche 0 eller 1 gang bruger man modifieren '?'.

Tak for træet

--
Steen Suder
Prøv at forestille dig, at du er en anden, og læs så din artikel igennem
inden du sender den. Alle har interesse i, at du staver og formulerer
dig, så godt du kan. På den måde forstås det lettere, hvad du skriver.

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste