regex Frage

Hallo,

kann mir mal jemand bitte diese Verhalten erläutern ?


$_ = "A\nB\nC\nD\n";

# Gibt 4-mal den String aus :
print while ( /\w/g );

# Gibt den String unendlich oft aus :
print while ( /\w/ );

# Gibt alles gar nichts aus, terminiert :

print while ( /^\w$/g );
print while ( /^\w$/ );
my $pat = '/\w/g' ;
print while ( $pat[0] );

Danke.
muede
muede [ Mo, 16 Oktober 2006 18:52 ] [ ID #1502238 ]

Re: regex Frage

muede wrote:

> kann mir mal jemand bitte diese Verhalten erläutern ?
>
> $_ = "A\nB\nC\nD\n";
>
> # Gibt 4-mal den String aus :
> print while ( /\w/g );
>
> # Gibt den String unendlich oft aus :
> print while ( /\w/ );
>
> # Gibt alles gar nichts aus, terminiert :
>
> print while ( /^\w$/g );
> print while ( /^\w$/ );
> my $pat = '/\w/g' ;
> print while ( $pat[0] );

Ja, so ist das.
Was verstehst Du daran denn nicht bzw. was erwartest stattdessen?

Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel
Frank Seitz [ Mo, 16 Oktober 2006 19:49 ] [ ID #1502239 ]

Re: regex Frage

muede wrote:

> kann mir mal jemand bitte diese Verhalten erläutern ?
>
> $_ = "A\nB\nC\nD\n";
>
> # Gibt 4-mal den String aus :
> print while ( /\w/g );
>
> # Gibt den String unendlich oft aus :
> print while ( /\w/ );
>
> # Gibt alles gar nichts aus, terminiert :
>
> print while ( /^\w$/g );
> print while ( /^\w$/ );
> my $pat = '/\w/g' ;
> print while ( $pat[0] );
>
> Danke.
> muede

Ja, so ist das.
Was verstehst Du daran denn nicht bzw. was erwartest Du stattdessen?

Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel
Frank Seitz [ Mo, 16 Oktober 2006 19:50 ] [ ID #1502240 ]

Re: regex Frage

muede schrieb:

> kann mir mal jemand bitte diese Verhalten erläutern ?

Das ist ein Scherz, oder?

> $_ = "A\nB\nC\nD\n";
>
> # Gibt 4-mal den String aus :
> print while ( /\w/g );

perldoc perlre
/looping modifier

Wenn du nur den Treffer ausgeben willst, dann musst du ihn auch einfangen:
/match variables

> # Gibt den String unendlich oft aus :
> print while ( /\w/ );

Weil immer true.

> # Gibt alles gar nichts aus, terminiert :
> print while ( /^\w$/g );

Weils nicht matcht.

> print while ( /^\w$/ );

Weils nicht matcht.

Suchst du vielleicht /m (in Verbindung mit /g)?

> my $pat = '/\w/g' ;
> print while ( $pat[0] );

Was soll das sein?

Global symbol " [at] pat" requires explicit package name

> Danke.
> muede

Na dann.


Frank
Frank Wiegand [ Mo, 16 Oktober 2006 19:56 ] [ ID #1502241 ]

Re: regex Frage

Frank Seitz schrieb:
> muede wrote:
>
>
>>kann mir mal jemand bitte diese Verhalten erläutern ?
>>
>>$_ = "A\nB\nC\nD\n";
>>
>># Gibt 4-mal den String aus :
>>print while ( /\w/g );
>>
>># Gibt den String unendlich oft aus :
>>print while ( /\w/ );
>>
>># Gibt alles gar nichts aus, terminiert :
>>
>>print while ( /^\w$/g );
>>print while ( /^\w$/ );
>>my $pat = '/\w/g' ;
>>print while ( $pat[0] );
>>
>>Danke.
>>muede
>
>
> Ja, so ist das.
> Was verstehst Du daran denn nicht bzw. was erwartest Du stattdessen?
>
> Grüße
> Frank
politza [ Mo, 16 Oktober 2006 20:02 ] [ ID #1502242 ]

Re: regex Frage

rtfm
Verzeihung..
muede
politza [ Mo, 16 Oktober 2006 20:37 ] [ ID #1502245 ]
Perl » de.comp.lang.perl.misc » regex Frage

Vorheriges Thema: reguläre Ausdrücke mit Wildcards auf beiden Seiten
Nächstes Thema: Lexikalische Variable