Patrick Andrieu: inhalt zwischen 2 Wörtern auslesen (regex)

Beitrag lesen

Hallo Siechfred!

Grundwissen zum Verständnis: Die Klammer um Lookaround-Konstrukte dient *nicht* der Gruppierung in Teilausdrücke.

Soweit war mir das bekannt.

my $text = 'foo:bar:baz:bum:foo';

$text =~ /(?<=foo:)(.*)(?=:foo)/;


> Jetzt scheint dein erster Denkfehler zu sein, dass $1 das Lookbehind, $3 das Lookahead und $2 alles dazwischen enthält  
  
Nein, ich wüßte bei diesem neuen Beispiel schon, dass $1 der Inhalt des zweitem Klammerpaars ist.  
  
Aber das:  
  

> dass deine Ersetzung keine echte[tm] ist, denn der Teilstring, der auf das Muster passt, ist identisch mit dem Teilstring, den du in $1 gespeichert hast. Ergo wird oben stehende Anweisung im Ergebnis nichts am Ausgangsstring verändern, da 'bar:baz:bum' durch 'bar:baz:bum' ersetzt wird.  
  
war mit nicht ganz klar. Jetzt denke ich schon. Danke!  
  
  
Zu /m und /s: Ich hatte vor langer Zeit meine liebe Not, aus  HTML-Dateien alles zwischen <form action="..." ......> und </form> (inklusive der Tags) zu entfernen. Das komplette, zu entfernende Formular erstreckte sich über mehrere Zeilen, deren Anzahl  
 nicht bekannt war, weil sie von Datei zu Datei variierte. Irgendwann habe ich die HTML-Dateien dann in Einzeilern umgewandelt, da gings (und logischerweise ohne die Modifier, da jede Datei nur noch ein einzeiliger String war)!  
  
Viele Grüße aus Frankfurt/Main,  
Patrick

-- 
![](http://www.atomic-eggs.com/clubsig.gif)  
  
\_ - jenseits vom delirium - \_  
  
[[link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash](http://www.atomic-eggs.com/)]  
Nichts ist unmöglich? [Doch!](http://www.atomic-eggs.com/cwi/cwi_4.shtml)  
Heute schon ge[gök](http://goek.atomic-eggs.com/goek_goek.html)t?