Thread pos($string) zwischen //g Regexes in Schleife? (9 answers)
Opened by GoodFella at 2007-03-27 18:55

GoodFella
 2007-03-27 18:55
#75444 #75444
User since
2007-01-09
192 Artikel
BenutzerIn
[default_avatar]
Hi,
ich schreibe gerade an einem Script, dass in einer Schleife nach Mustern eines sich mit dem Inhalt einer foreach-Schleifenvariable verändernden Strings sucht; diese Suche soll bestimmte Werte zurückliefern, weswegen ich den global-Modifier verwende.
Angenommen, ich suche per Regex das erste Mal und er findet etwas. Perl setzt pos dann automatisch an dieses Offset. Dann kommt der nächste Schleifendurchlauf. Jetzt soll er wieder bei 0 anfangen zu suchen, also muss ich pos immer auf 0 zurücksetzen.
Ist relativ unelegant finde ich; also: gibt es dafür eine elegantere Lösung?

perldoc habe ich schon befragt:

Quote
C:\Dokumente und Einstellungen\Administrator>perldoc -f pos
pos SCALAR
pos Returns the offset of where the last "m//g" search left off for
the variable in question ($_ is used when the variable is not
specified). Note that 0 is a valid match offset. "undef"
indicates that the search position is reset (usually due to
match failure, but can also be because no match has yet been
performed on the scalar). "pos" directly accesses the location
used by the regexp engine to store the offset, so assigning to
"pos" will change that offset, and so will also influence the
"\G" zero-width assertion in regular expressions. Because a
failed "m//gc" match doesn't reset the offset, the return from
"pos" won't change either in this case. See perlre and perlop.

View full thread pos($string) zwischen //g Regexes in Schleife?