perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 30
Click for quality!




11.02.2012 / 18:21

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


Beitrag/o man /o man ... REGEX
Seitenanfang
Wahrscheinlich missbrauche ich dieses Forum, keine Ahnung. Das ist nämlich keine Frage, sondern eine Antwort auf meine eigene Frage. ... ist aber wert, zur Kenntnis genommen zu werden - vielleicht bleibt dann dem einen oder anderen Benutzer einige Qual erspart.

Ich hatte vor einem Monat gefragt, warum Perl bei Klammern spinnt, obwohl diese ja nicht im REGEX sind, sondern im zu durchsuchenden Text.

Mir war vorher nicht klar, dass Perl einen REGEX zweimal kompiliert. D.h. wenn irgendwas gefunden wird, dann wird das Gefundene nochmal interpretiert. Und wenn in dem Gefundenen Metazeichen sind, wie z.B. Klammern, dann werden die nochmal kompiliert und dann bekommt man solche Fehlermeldungen, wie, dass es keine sich schließende Klammer gibt usw. (Kleene-Sterne und Kleene-Plus sind auch nett).
Wenn jemand ähnliche verwunderliche Erfahrungen macht, dann möge es mal mit dem Modifier /o versuchen. Dann wird der REGEX nur einmal kompiliert und benimmt sich dann vielleicht eher so, wie man (ich) es erwartet.

Tschüss

Felix

Datum: 12.08.2005-16:07

Beitragre: /o man /o man ... REGEX
Seitenanfang
... /o ist zwar eine Lösung, man darf sich dann aber nicht wundern, wenn ein Muster nur genau einmal kompiliert wird.


for $arr (@array){
$line =~ s/$arr/bla/o;
}

Hier wird nur das erste Arrayelement beachtet. Beim zweiten Durchgang bleibt das erste Muster und es passiert nichts mehr.

Datum: 12.08.2005-16:27

-






-
-