Hilfsfunktionen
(Auszug aus "Reguläre Ausdrücke" von Jeffrey E. F. Friedl)
Zu den Funktionen aus dem letzten Abschnitt (Statische »Komfort-Funktionen«) gibt es noch andere statische Hilfsfunktionen:
Regex.Escape(String)
Regex.Escape(...) erwartet einen String als Argument und gibt eine Kopie davon zurück, in der alle Regex-Metazeichen geschützt wurden. Der so erhaltene String kann als Literal in einer Regex verwendet werden.
Wenn der Benutzer beispielsweise einen String Suchwort eingeben kann, will man sicherstellen, dass dieser String keine Metazeichen enthält, bevor man ihn in eine Regex einbaut:
So kann der Benutzer im Suchwort auch Zeichen eingeben, die normalerweise als Metazeichen interpretiert würden. Wenn für Suchwort der String ›:-)‹ eingegeben würde, würde dies normalerweise die Ausnahme ArgumentException auslösen (siehe Ausnahmen abfangen).
Regex.Unescape(String)
Diese merkwürdige Funktion erwartet einen String und gibt einen String zurück, bei dem manche Backslash-Sequenzen interpretiert wurden und bei anderen der Backslash entfernt wurde. Bei ›\:\-\)‹ zum Beispiel wird ›:-)‹ zurückgegeben.
Backslash-Sequenzen für Zeichen werden interpretiert. Wenn der String im Argument ein ›\n‹ enthält, wird dies im Rückgabewert zu einem wirklichen Newline. Die Sequenz ›\u1234‹ wird durch das entsprechende Unicode-Zeichen ersetzt. Alle Abkürzungen für Zeichen aus der Tabelle Elemente von regulären Ausdrücken in .NET – Übersicht werden interpretiert.
Für reguläre Ausdrücke kann ich keine sinnvolle Verwendung von Regex.Unescape erkennen, aber zur Manipulation von Strings ist die Funktion ganz praktisch.
Match.Empty
Diese Funktion liefert ein Match-Objekt, das einem Fehlschlag entspricht. Sie wird beispielsweise benutzt, um ein Match-Objekt zu initialisieren, das später vielleicht Daten erhält, das aber auf jeden Fall abgefragt wird. Hier ein einfaches Beispiel:
Dim SubjMatch as Match = Match.Empty 'Initialisieren für den Fall, dass in der Schleife
... 'nichts gefunden wird.
Dim Zeile as String
For Each Zeile in EmailKopfzeilen
'Wenn wir eine »Subject:«-Zeile haben, werden die Trefferdaten für später abgelegt ...
Dim ZeilenMatch as Match = Regex.Match(Zeile, "^Subject:\s*(.*)", _
RegexOptions.IgnoreCase)
If ZeilenMatch.Success
SubjMatch = ZeilenMatch
End If
...
Next
If SubjMatch.Success
Console.WriteLine(SubjMatch.Result("Betreff: $1"))
Else
Console.WriteLine("Kein Betreff!")
End If
Wenn das String-Array EmailKopfzeilen keine »Subject:«-Zeile (oder überhaupt keine Zeilen) enthält, wird das Objekt SubjMatch nie mit Trefferdaten gefüllt. Wenn es nach der Schleife abgefragt wird, ergäbe das einen Fehler, wenn das Objekt nicht zuvor mit Match.Empty initialisiert worden wäre.
Regex.CompileToAssembly(...)
Mit dieser Funktion kann man ein Regex-Objekt in einer Assembly speichern – mehr dazu erfahren Sie unter Regex-Assemblies.
<< 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