Mehr zur Zeichensuche

[ vorherige Seite ] [ Titelseite ] [ Inhalt ] [ Index ] [ nächste Seite ]


Optionen beim Suchoperator


Das Verhalten bei der Suche kann durch nachgestellte Optionen beeinflußt werden:

[Seitenanfang]


Optionen innerhalb eines regulären Ausdrucks


Die im vorherigen Abschnitt beschriebenen global wirkenden Optionen können auch innerhalb eines regulären Ausdrucks gesetzt werden, um beispielsweise nur Teile davon zu beeinflussen. Dies wird durch "(?Option(en))" bewerkstelligt. Hierbei können die Optionen i, m, s und x verwendet werden. Die Wirkung erstreckt sich bis zum Ende des regulären Ausdrucks, innerhalb einer Gruppierung oder bis zu einer Deaktivierung mittels "(?-Option(en))".

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

use strict;

my $t = "ABcd";

$t =~ /[a-z][a-z]/i;         print "$&\n"; # 1
$t =~ /(?i)[a-z][a-z]/;      print "$&\n"; # 2
$t =~ /((?i)[a-z])[a-z]/;    print "$&\n"; # 3
$t =~ /[a-z](?i)[a-z]/;      print "$&\n"; # 4
$t =~ /(?i)[a-z](?-i)[a-z]/; print "$&\n"; # 5
AB
AB
Bc
cd
Bc

Test 2 ist äquivalent zu Test 1. In Test 3 ist wegen der Klammerung nur für den ersten Buchstaben Großschrift erlaubt. Da in Test 4 der erste Buchstabe klein geschrieben sein muß, kommt nur "cd" als Lösung infrage. Die letzte Zeile zeigt wie man eine Option wieder abschalten kann (entspricht Test 3).

[Seitenanfang]


Spezielle Variablen


In den vorherigen Abschnitten wurden schon einige spezielle Perl-Variablen im Zusammenhang mit der Mustersuche erwähnt; hier eine Übersicht:

Beispiel:

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

use strict;

my $s = "Dies ist ein Test ...";

if($s =~ /is([a-z]) (.*) Test/) {
  print $&."\n";
  print $1."\n";
  print $2."\n";
  print $+."\n";
  print $`."\n";
  print $'."\n";
}
ist ein Test
t
ein
ein
Dies 
 ...

[Seitenanfang]


Suchen und Ersetzen


Anstelle einer einfachen Suche kann man in Perl auch den gefundenen Ausdruck direkt durch einen neuen ersetzen. Allgemein:

$string =~ s/Regexp/Ersatz/Optionen;

Dabei wird wie beim Suchoperator ("m/.../") $string nach einer zu Regexp passenden Zeichenkette durchsucht. Wird ein solcher Teilstring gefunden, so wird an dessen Stelle der Text Ersatz gesetzt.

Beispiel:

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

use strict;

my $t = "Beispiel";
$t =~ s/e/-e-/;
print "$t\n";
B-e-ispiel

Im obigen Beispiel wird der String $t nach dem Buchstaben "e" abgesucht und (beim ersten Auffinden) durch die Zeichenkette "-e-" ersetzt.

Auch beim Suchen und Ersetzen können die Schrägstriche des Operators durch andere Zeichen ersetzt werden (keine alphanumerischen Symbole oder Leerzeichen).

Es können die gleichen Optionen wie beim Suchoperator verwendet werden, ihre Wirkung bezieht sich dabei auf den regulären Ausdruck. Eine zusätzliche Option ermöglicht die Auswertung des Ersatz-Teils.

Optionen:

[Seitenanfang]


[ vorherige Seite ] [ Titelseite ] [ Inhalt ] [ Index ] [ nächste Seite ]

Autor: Eike Grote Version: 2.06 (15.9.2013)