Reguläre Ausdrücke in Perl (8)

## Verschiedenes

- Kommentare

  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.

- Aktivieren von Optionen

  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 Test 2 die multiple line-Option durch "`(?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: 03.11.2004