Um bei komplexen regulären Ausdrücken die Übersicht zu
behalten, können Kommentare in Klammern wie diesen
"(?#...)
" eingefügt werden.
#!/usr/local/bin/perl -w $t = "Wasserfall"; if($t =~ /((.)\2)(?# suche zwei gleichen Zeichen,Zeichenpaar in $1)/) { print "\$1: $1\n" } |
Beachte, daß hier "\2
" verwendet werden muß, um das
Zeichen, das auf ".
" paßt, zu verwenden, da der Punkt nach der
zweiten öffnenden Klammer steht.
Normalerweise werden die Optionen eines regulären Ausdrucks fest
vorgegeben. Sollen bei verschiedenen Mustern unterschiedliche Optionen
verwendet werden, so läßt sich dies durch
"(?
Option(en))
" bewerkstelligen.
#!/usr/local/bin/perl -w $t = "Zeile 1\nZeile 2\n"; $m1 = '^(.|\n)+?$'; $m2 = '(?m)^(.|\n)+?$'; if($t =~ /$m1/) { print "true ($&)\n" } # Test 1 if($t =~ /$m2/) { print "true ($&)\n" } # Test 2 |
true (Zeile 1 Zeile 2) true (Zeile 1) |
In diesem Beispiel wird in (?m)
" aktiviert, so daß dann dort in der Variablen
$&
nur noch 'Zeile 1' auftaucht ($
paßt schon
am ersten Zeilenende).
Hier sehen wir auch noch eine weitere Möglichkeit, um ein beliebiges
Zeichen (einschließlich von newline) zu suchen: "(.|\n)
".
Autor: Eike Grote | Letzte Änderung: 02.10.1997 |