© Liashko/Shutterstock.com
Entwickler Magazin
Mit regulären Ausdrücken suchen und finden

Mit regulären Ausdrücken suchen und finden

Für reguläre Ausdrücke gibt es jede Menge Einsatzgebiete; bei der alltäglichen Programmierarbeit sind sie quasi unverzichtbar. Besonders hilfreich sind RegEx als Regelwerk zum Prüfen einer Syntax oder eines Formats. Dieser Bericht zeigt Einsatz und Beispiele aus den Gebieten Web, DB und Objektstrukturen. Denn wer sucht, will gefunden werden.

Max Kleiner


Doch damit nicht genug: Man kann mit regulären Ausdrücken die Eigenschaften, z. B. das Vorkommen bestimmter (Arten von) Zeichen, Reihenfolge, Häufigkeit etc. eines Texts oder einer Datenmenge allgemein beschreiben und danach suchen oder ersetzen lassen. Dazu sollten wir uns zunächst einmal das Regelwerk ansehen.

Ein Regelwerk

Reguläre Ausdrücke (regular expressions) sind sehr leistungsfähig und ermöglichen das komplizierte und herausfordernde Zerlegen (Parsing) von Texten. Durch einen Quasi-Standard sind auch die Muster hochgradig wiederverwendbar. In dem Sinne gibt es keine irregulären Ausdrücke.

Was sind RegEx? Sie dienen dazu, Muster als Suchmasken oder Filter zu definieren; Muster, oder neudeutsch Patterns, die Klassen von Zeichenketten beschreiben und festlegen.

RegEx-Methoden haben in den meisten Umgebungen das vordefinierte Objekt namens Regex. Sie können Regex schreiben, gefolgt von einem Punkt, um die verfügbaren Methoden zu sehen. Zum Beispiel: RegEx.Options:= [preCaseLess, preMultiline];

Alle Methoden akzeptieren einen Muster-String (pattern string) – das Muster des regulären Ausdrucks. Beachten Sie, dass die kompilierten Muster intern zwischengespeichert werden. Es gibt also keinen Performanceverlust bei mehrfacher Verwendung des gleichen Musters.

Betrachten wir mal einen ersten kleinen RegEx, der seinen Nutzen auch in Suchmasken oder Editoren hat (Abb. 1). In der Regel kennt man Ausdrücke wie *.txt z. B. vom Dateimanagement, somit ist das Prinzip der regulären Ausdrücke bereits bekannt. Einzelne Sonderzeichen (wie hier der Asterisk, *) haben eine spezielle Bedeutung und stehen z. B. für beliebigen Text. Im obigen Beispiel steht der „*“ als Platzhalter für einen beliebigen Dateinamen. Es geht nun um das Suchen oder Ersetzen von leeren Zeilen, sozusagen das „Hello World“ bei RegEx: „^$“.

Bereits bei diesen ersten zwei Zeichen (auch Anchors genannt) kommt der Kontext ins Spiel, der mit Tabelle 1 einhergeht.

RegEx-ZeichenFunktionalität^ , \ABeginn des Strings$ , \ZString-Ende[]Auswahlmöglichkeiten einzelner Zeichen/ODER[^]Negative Auswahlmöglichkeiten einzelner Zeichen/NICHT ODER.Beliebiges Zeichen?Kein- oder einmal, {0,1}*Keinmal bis beliebig oft {0,} (gierig, greedy)+Ein- oder mehrmals {1,} (gierig)*?Keinmal bis beliebig oft {0,}? (nicht gierig)+?Ein- oder mehrmals {1,}? (nicht gierig){7}Siebenmal{3,5}Drei- bis fünfmal{4,}Viermal oder mehr (mindestens)

Tabelle 1: RegEx-Kontext

Das „^“ steht für Zeilenumbruch oder Vergleich am Anfang einer Zeile abe...

Entwickler Magazin
Mit regulären Ausdrücken suchen und finden

Mit regulären Ausdrücken suchen und finden

Für reguläre Ausdrücke gibt es jede Menge Einsatzgebiete; bei der alltäglichen Programmierarbeit sind sie quasi unverzichtbar. Besonders hilfreich sind RegEx als Regelwerk zum Prüfen einer Syntax oder eines Formats. Dieser Bericht zeigt Einsatz und Beispiele aus den Gebieten Web, DB und Objektstrukturen. Denn wer sucht, will gefunden werden.

Max Kleiner


Doch damit nicht genug: Man kann mit regulären Ausdrücken die Eigenschaften, z. B. das Vorkommen bestimmter (Arten von) Zeichen, Reihenfolge, Häufigkeit etc. eines Texts oder einer Datenmenge allgemein beschreiben und danach suchen oder ersetzen lassen. Dazu sollten wir uns zunächst einmal das Regelwerk ansehen.

Ein Regelwerk

Reguläre Ausdrücke (regular expressions) sind sehr leistungsfähig und ermöglichen das komplizierte und herausfordernde Zerlegen (Parsing) von Texten. Durch einen Quasi-Standard sind auch die Muster hochgradig wiederverwendbar. In dem Sinne gibt es keine irregulären Ausdrücke.

Was sind RegEx? Sie dienen dazu, Muster als Suchmasken oder Filter zu definieren; Muster, oder neudeutsch Patterns, die Klassen von Zeichenketten beschreiben und festlegen.

RegEx-Methoden haben in den meisten Umgebungen das vordefinierte Objekt namens Regex. Sie können Regex schreiben, gefolgt von einem Punkt, um die verfügbaren Methoden zu sehen. Zum Beispiel: RegEx.Options:= [preCaseLess, preMultiline];

Alle Methoden akzeptieren einen Muster-String (pattern string) – das Muster des regulären Ausdrucks. Beachten Sie, dass die kompilierten Muster intern zwischengespeichert werden. Es gibt also keinen Performanceverlust bei mehrfacher Verwendung des gleichen Musters.

Betrachten wir mal einen ersten kleinen RegEx, der seinen Nutzen auch in Suchmasken oder Editoren hat (Abb. 1). In der Regel kennt man Ausdrücke wie *.txt z. B. vom Dateimanagement, somit ist das Prinzip der regulären Ausdrücke bereits bekannt. Einzelne Sonderzeichen (wie hier der Asterisk, *) haben eine spezielle Bedeutung und stehen z. B. für beliebigen Text. Im obigen Beispiel steht der „*“ als Platzhalter für einen beliebigen Dateinamen. Es geht nun um das Suchen oder Ersetzen von leeren Zeilen, sozusagen das „Hello World“ bei RegEx: „^$“.

Bereits bei diesen ersten zwei Zeichen (auch Anchors genannt) kommt der Kontext ins Spiel, der mit Tabelle 1 einhergeht.

RegEx-ZeichenFunktionalität^ , \ABeginn des Strings$ , \ZString-Ende[]Auswahlmöglichkeiten einzelner Zeichen/ODER[^]Negative Auswahlmöglichkeiten einzelner Zeichen/NICHT ODER.Beliebiges Zeichen?Kein- oder einmal, {0,1}*Keinmal bis beliebig oft {0,} (gierig, greedy)+Ein- oder mehrmals {1,} (gierig)*?Keinmal bis beliebig oft {0,}? (nicht gierig)+?Ein- oder mehrmals {1,}? (nicht gierig){7}Siebenmal{3,5}Drei- bis fünfmal{4,}Viermal oder mehr (mindestens)

Tabelle 1: RegEx-Kontext

Das „^“ steht für Zeilenumbruch oder Vergleich am Anfang einer Zeile abe...

Neugierig geworden?


   
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang