Reguläre Ausdrücke in Perl (5)

## Alternativen bei der Suche

Wie man bei der Suche nach einzelnen Zeichen eine Auswahl vorgeben kann, haben wir im Abschnitt zu den Zeichenklassen gesehen. Natürlich möchte man diese Möglichkeit auch bei längeren Ausdrücken zur Verfügung haben. Dazu wird der senkrechte Strich ("`|`") verwendet, der die einzelnen Alternativen voneinander trennt.

    #!/usr/local/bin/perl -w

    $t = "Perl";

    if($t =~ /FORTRAN|C|Pascal|Perl/) { print "true ($&)\n" } else { print "false\n" }

Bei der Suche werden die Alternativen von links beginnend durchprobiert bis ein passendes Muster gefunden wurde (hier: "Perl").

Bei komplexeren Ausdrücken müssen meist Klammern gesetzt werden, damit klar ist, welche Teile zu den Alternativen gehören und welche nicht.

    #!/usr/local/bin/perl -w

    $t = "1997";

    if($t =~ /1996|97|98/)   { print "true ($&)\n" } else { print "false\n" }
    if($t =~ /19(96|97|98)/) { print "true ($&)\n" } else { print "false\n" }

Beide Tests sind zwar erfolgreich, liefern aber unterschiedliche Ergebnisse in `$&` ("97" bzw. "1997")

Autor: Eike Grote | Letzte Änderung: 03.11.2004