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 |