Reguläre Ausdrücke - Suche nach Zeichen am Wortanfang und am Wortende
Nochmal zurück zur einfachen Suche.
Wie kann ich nach Zeichen Suchen, die am Wortanfang oder am Wortende stehen? Natürlich bieten reguläre Ausdrücke auch dafür eine Lösung. Die zeichen ^ und $ werden dafür genutzt.
Beispiel:
$t="Anfang und Ende";
if ($t=~ /^Anfang/){print "wahr\n";} else {print "falsch\n";}
if ($t=~ /^Ende/){print "wahr\n";} else {print "falsch\n";}
if ($t=~ /Ende$/){print "wahr\n";} else {print "falsch\n";}
if ($t=~ /Anfang$/){print "wahr\n";} else {print "falsch\n";}
Ausgabe: wahr, falsch, wahr, falsch
Das ^-Zeichen gibt also an, daß das folgende Zeichen am Wortanfang stehen muß, ansonsten trifft die RegEx nicht zu.
Gleiches für das $-Zeichen. Die Zeichen vor dem $ müssen am Wortende stehen, sonst passt's nicht!
Übrigens
Ein beliebter Fehler ist der Zeilenumbruch am Ende eines Skalars. Wird zum Beispiel aus einer Textdatei ein Skalar eingelesen, kann am Ende ein \n stehen.
Suchen Sie nun nach $skalar=~ /abc$/ und am Schluß steht abc\n, so trifft die RegEx natürlich nicht zu. Tückisch ist daran, daß, wenn man sich den Skalar im Browser oder im Eingabefenster ausgeben läßt, das \n natürlich nicht als "\n" dasteht, sondern halt ein Zeilenumbruch ausgegeben wird, also kein Zeichen sichtbar wird.