Definition "Regulärer Ausdruck" (1)

Ein regulärer Ausdruck (englisch regular expression, Abkürzung RegExp oder Regex) ist in der theoretischen Informatik eine Zeichenkette, die der Beschreibung von Mengen von Zeichenketten mit Hilfe bestimmter syntaktischer Regeln dient.

Wikipedia

Definition "Regulärer Ausdruck" (2)

Neben Implementierungen in vielen Programmiersprachen verarbeiten auch viele Texteditoren reguläre Ausdrücke in der Funktion "Suchen und Ersetzen". Ein einfacher Anwendungsfall von regulären Ausdrücken sind Wildcards.

Wikipedia

Definition "Regulärer Ausdruck" (3)

Reguläre Ausdrücke können als Filterkriterien in der Textsuche verwendet werden, indem der Text mit dem Muster des regulären Ausdrucks abgeglichen wird. Dieser Vorgang wird auch 'Pattern Matching' genannt.

Wikipedia

Idee, Syntax und Implementation

  • Reguläre Ausdrücke basieren auf genau drei Operationen: 'Alternative', 'Verkettung' und 'Wiederholung'.
  • Die meisten heutigen Implementierungen unterstützen Erweiterungen wie zum Beispiel Rückwärtsreferenzen (backreferences).
  • Die im Folgenden angegebene Beschreibung ist eine (oft benutzte) Konvention, um Konzepte wie 'Zeichenklasse', 'Quantifizierung', 'Verknüpfung' und 'Zusammenfassen' konkret zu realisieren.
  • Hierbei wird ein regulärer Ausdruck aus den Zeichen des zugrunde liegenden Alphabets in Kombination mit den Metazeichen gebildet.

Metazeichen

MetazeichenBedeutungBeispiel
[ ]Zeichenmenge[a-z]
.beliebiges Zeichen
? + *Quantoren\s*
{ }Quantor (Anzahl){4} {3,} {2,5} {0,4}
( )Gruppierung(abc)+
|oder-Symbol(Katz|Maus)
\Maskierung (hebt gegebenenfalls die Metabedeutung des nächsten Zeichens auf)\?
^Negation (nur am Anfang einer Zeichenmengenangabe)[^a-z]

Quantoren

MetazeichenBedeutungBeispiel
+1 oder mehrmal\d+\. Jh\.
*0 oder mehrmalA*B*C*
?0 oder einmal
gleichzeitig: Begrenzer der vorherigen Quantoren
plurals?
{4}genau vier mal\s\d{4}\s

Vordefinierte Zeichenmengen

ZeichenmengeBedeutungalternativ zu
\ddigit[0-9]
\Dno digit[^\d]
\wword character[a-zA-Z0-9_]
\swhitespaceu.a. Leerzeichen, Tabstopp (\t), Zeilenumbruch (\n, \r)
\p{L}Letter (Unicode-Zeichenbereich)auch Umlaute u.ä.
\p{P}Punctuation (Unicode-Zeichenbereich)u.a. ,;.:-?!

Lokalisierung

AusdruckBedeutungBeispiel
\bWortanfang oder -ende\b\w{4}\b
^Zeilen- (Absatz-) bzw. Stringanfang
$Zeilen- (Absatz-) bzw. Stringende
(?=Ausdruck)positive look-ahead assertionAusdruck(?=Ausdruck)
(?!Ausdruck)negative look-ahead assertionAusdruck(?!Ausdruck)
(?<=Ausdruck)positive look-behind assertion(?<=Ausdruck)Ausdruck
(?<!Ausdruck)negative look-behind assertion(?<!Ausdruck)Ausdruck
\nn-te Gruppe\b(\w)(\w)\2\1\b

Verwendung beim "Suchen und Ersetzen"

  • Beim Suchen und Ersetzen wird vor allem von der Gruppierung Gebrauch gemacht.
  • Eine Gruppe kann beim Ersetzen als 'Variable' aufgerufen werden.
  • '$n' setzt den Inhalt der n-ten Klammer ein.

Beispiel beim "Suchen und Ersetzen"

AusdruckErsetze
([\p{L}\d\p{P}])\s*\n+\s+([\p{L}\d\p{P}&\(])$1 $2

Erläuterung

  • "([\p{L}\d\p{P}])" → Suche ein Zeichen aus der Menge der Klassen 'Letter', 'Digit' oder 'Punctuation'
  • "\s*\n+\s+" → Suche beliebig viele Whitespaces, gefolgt von einem Zeilenumbruch, gefolgt von mindestens einem Whitespace
  • "([\p{L}\d\p{P}&\(])" → Suche ein Zeichen aus der Menge der Klassen 'Letter', 'Digit' oder 'Punctuation', oder ein Ampersand
  • Setze an der Fundstelle den Inhalt des Ausdrucks der ersten Klammer wieder ein, gefolgt von einem Leerzeichen, gefolgt vom Inhalt des Ausdrucks der zweiten Klammer

Beispiel beim "Suchen und Ersetzen"

AusdruckErsetze
"\s+(/?)>"$1>

Erläuterung

  • Suche ein Anführungszeichen, gefolgt von mindestens einem Whitespace, gefolgt von keinem oder einem Schrägstrich, gefolgt von einer schließenden Spitzklammer

Literatur

<Ende/>