Match-Objekte verwenden

(Auszug aus "Reguläre Ausdrücke" von Jeffrey E. F. Friedl)

Match-Objekte werden mit der Match-Methode des Regex-Objekts, mit der statischen Funktion Regex.Match (mehr dazu in Kürze) und mit der Methode NextMatch des Match-Objekts selbst erzeugt. In diesem Objekt sind alle Informationen zu einem einzelnen Treffer der Regex vorhanden. Es besitzt die folgenden Eigenschaften und Methoden:

MatchObj.Success

Gibt einen booleschen Wert zurück, der besagt, ob überhaupt ein Treffer gefunden wurde. Bei einem Fehlschlag ist das Objekt eine Kopie des statischen Match.Empty-Objekts (siehe Match.Empty).

MatchObj.Value
MatchObj.ToString()

Geben den Treffertext zurück.

MatchObj.Length

Gibt die Anzahl der Zeichen im Treffertext zurück.

MatchObj.Index

Gibt den Anfang des Treffers im Suchtext als Integer zurück. Die Zeichen im Suchtext werden ab null gezählt, also ist der Wert die Anzahl der Zeichen im Suchtext vor dem Treffer (links davon). Das ist auch dann so, wenn die Option RegexOptions.RightToLeft verwendet wurde.

MatchObj.Groups

Diese Eigenschaft ist ein GroupCollection-Objekt, das diverse Group-Objekte enthält. An sich ist es ein normales Collection-Objekt mit den Methoden Count und Item, meist aber wird es mit einem Index benutzt, weil man an einzelnen Group-Objekten interessiert ist. M.Groups(3) ist das Group-Objekt, das zur dritten einfangenden Klammer gehört, M.Groups("HostName") ist das Objekt, das der benannten Klammer ˹(?<HostName>...)˼ entspricht.

In C# müssen Sie M.Groups[3] und M.Groups["HostName"] schreiben.

Die nullte Gruppe bezieht sich auf den Gesamttreffer; MatchObj.Groups(0).Value ist also das Gleiche wie MatchObj.Value.

MatchObj.NextMatch()

Mit der Methode NextMatch() wird die ursprüngliche Regex neu angewandt, es wird ein neues Match-Objekt zurückgegeben, das dem nächsten Treffer entspricht.

MatchObj.Result(String)

Die »Dollar-Sequenzen« im String werden verarbeitet, wie im Kasten Spezielle »Dollar-Sequenzen« im Ersatztext beschrieben. Der Rückgabewert ist der veränderte String. Ein einfaches Beispiel:

Dim M as Match = Regex.Match(BeispielString, "\w+")
Console.WriteLine(M.Result("Das erste Wort ist '$&'"))

Man kann damit beispielsweise den Text links und rechts des Treffers erhalten:

M.Result("$`") 'Text aus dem Suchstring links des Treffers.
M.Result("$'") 'Text aus dem Suchstring rechts des Treffers.

Beim Debuggen ist eine Zeile wie die folgende oft sehr hilfreich:

M.Result("[$`<$&>$']"))

Zu einem Match-Objekt, das aus der Regex ˹\d+˼ und dem Suchstring ›May 16, 1998‹ entstanden ist, wird ›May <16>, 1998‹ ausgegeben.

MatchObj.Synchronized()

Gibt ein Match-Objekt zurück, das mit dem aktuellen identisch ist, das aber auch in einer Multithread-Umgebung benutzt werden kann.

MatchObj.Captures

Die Eigenschaft Captures wird selten benutzt; mehr dazu finden Sie bei Capture-Objekte.

  

<< 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