Mit regulären Ausdrücken Text verändern
(Auszug aus "Reguläre Ausdrücke" von Jeffrey E. F. Friedl)
Bis jetzt haben sich die Beispiele auf das Finden von Text beschränkt und eben auf das Herauspflücken von Informationen aus dem untersuchten String. Jetzt betrachten wir die Substitution, oder das Suchen und Ersetzen, ein Regex-Feature, das Perl und viele der Regex-Werkzeuge unterstützen.
Wie wir gesehen haben, versucht $var =~ m/Regex/, den regulären Ausdruck auf den Text in der Variablen anzuwenden, und gibt »wahr« oder »falsch« zurück. Das ähnliche Konstrukt $var =~ s/Regex/Ersatztext/ geht einen Schritt weiter: Wenn die Regex wahr ist, dann wird der Teil des Strings in $var, der auf den regulären Ausdruck gepasst hat, durch den Ersatztext (zwischen dem mittleren und dem letzten Slash) ersetzt. Die Regex ist die gleiche wie bei m/.../, aber der Ersatztext wird auf dieselbe Art behandelt wie Strings in Anführungszeichen. Das bedeutet, dass man darin Variablen benutzen kann (inklusive der hier besonders nützlichen $1, $2 usw.; damit kann man auf eben gefundene Teilstrings zurückgreifen).
Bei $var =~ s/.../.../ wird also der Wert der Variablen verändert, aber nur, wenn der reguläre Ausdruck passt, sonst bleibt der Wert der Variablen unverändert. Wenn zum Beispiel $var den Text Jeff●Friedl enthält und wir darauf
$var =~ s/Jeff/Jeffrey/;
anwenden, hat $var danach den Wert Jeffrey●Friedl. Wenn die Variable $var bereits vorher Jeffrey●Friedl enthielte, bekämen wir nach diesem Programmstück schließlich den neuen Wert Jeffreyrey●Friedl. Das ist ein Fall für Wortgrenzen-Metazeichen! Unter Einführung in reguläre Ausdrücke haben wir gesehen, dass manche Versionen von egrep ˹\<˼ und ˹\>˼ als Wortanfang- und Wortende-Metazeichen unterstützen. Perl dagegen hat das eine Zeichen ˹\b˼ für beides:
$var =~ s/\bJeff\b/Jeffrey/;
Eine etwas trickreiche Frage: Wie bei m/.../ sind auch bei s/.../.../ Modifikatoren wie /i zulässig. Was wird in diesem Fall durch die Substitution $var =~ s/\bJeff\b/Jeff/i bewirkt? Auflösung siehe Lösung 7.
- Programmbeispiel: Serienbrief
- Programmbeispiel: Aktienkurse
- Automatisiertes Editieren von Dateien
- Ein kleines Mail-Programm
- Große Zahlen in Dreiergruppen aufteilen: Lookaround
- Nackten Text in HTML verwandeln
- Ein Wiedersehen mit verdoppelten Wörtern
<< zurück | vor >> |
Tipp der data2type-Redaktion: Zum Thema Reguläre Ausdrücke bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an: |
Copyright der deutschen Ausgabe © 2008 by O’Reilly Verlag GmbH & Co. KG
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "Reguläre Ausdrücke" denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.
O’Reilly Verlag GmbH & Co. KG, Balthasarstr. 81, 50670 Köln