In einem String nach [ oder ] suchen

Hallo,

wie kann ich in einem String nach den Zeichen [oder] suchen? Wenn ich mit

$at =~ s/[.+/_/g

alles was nach dem [kommt durch _ ersetzen will, dann bekomme ich eine Fehlermeldung, weil ein schließendes] erwartet wird. Mit normalen Buchstaben gehts. z.B. $at =~ s/a.+/_/g ersetzt alles nach dem a durch _. Leider brauch ich aber unbedingt [. Ich hab schon alles mögliche probiert z.B. [[ aber ich bekomms einfach nicht hin. Wer kann mir helfen??

Viele Grüße
Albert

Hallo Albert,

wie kann ich in einem String nach den Zeichen [oder] suchen?
Wenn ich mit

$at =~ s/[.+/_/g

alles was nach dem [ kommt durch _ ersetzen will, dann bekomme
ich eine Fehlermeldung, weil ein schließendes ] erwartet wird.

Die Zeichen „[“ und „]“ haben innerhalb von regulären Ausdrücken
eine spezielle Bedeutung, nämlich „suche eines der in diesen
Klammern aufgeführten Zeichen“ (=Zeichenklasse). Um nach den
eigentlichen Klammern zu suchen, musst Du einen Backslash „“ voranstellen. Damit sorgst Du für das sogenannte Escaping
von Metazeichen

$at =~ s/\[.+/\_/g

ersetzt nun die Zeichenkette innerhalb von $at der Form
„[ gefolgt von mindestens einem beliebigen Zeichen“ mit einem
„_“.

Da die Verwendung von regulären Ausdrücke gerade am Beginn
ziemlich fehlerträchtig ist, solltest Du einen Blick in
die mitgelieferte Perl-Dokumentation werfen:

perldoc perlre - liefert eine Beschreibung von Perl’s
regülären Ausdrücken
perldoc perlop - enthält u.a. Beispielcode zu dem Substitutionsoperator s///

Frohes Schaffen!

-Andreas.

Danke, funktioniert wunderbar (o.T.)
o.T.