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

Beitrag lesen

Hallo Siechfred!

my $text= "sss: hallo ich bin der text ttt:";

$text =~ s/sss:(.*)(?=ttt:)/>$1</;
print $text;


> Das dürfte die Erleuchtung sein :)  
  
Hm, ja :) Ich sehe jetzt, dass $1 jetzt den Inhalt des ersten Klammerpaares ist, aber das ist auch das, was ich erwartete. Nur die Funktionsweise des Lookaheads will mir nicht so recht ins Head ;)  
  
  

> bedeutet, dass das Lookahead-Konstrukt nicht Bestandteil des zu suchenden und ersetzenden Stringteils ist.  
  
... und wurde deswegen bei meinem Beispiel mit ausgegeben? Wozu ist dann so etwas gut, wollte der OP nicht $1 extrahieren?  
  

> Weil //m bedeutet, dass die Zeichenklasse '.' auf alles \*außer\* Newlines matcht, während //s die Newlines einschließt.  
  
Erlaubt nicht »m« das Suchen über mehrere Zeilen hinweg, in dem es den zu durchsuchenden Text betrachtet, als wäre es -sozusagen- eine Zeile?  
  
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?