Reguläre Ausdrücke

Reguläre Ausdrücke sind ein sehr mächtiges Suchwerkzeug. Sie erlauben die Suche nach komplexen Klassen von Wörtern.

Reguläre Ausdrücke bestehen aus normalen Zeichen und speziellen Zeichen, sogenannten Metazeichen.

Folgende Zeichen sind Metazeichen oder der Anfang von Metazeichen: . \ ( ) [ ] { } ^ $ + * ? (nur in Zeichenklassen: - )

Normale Zeichen: test findet den Text "test" im durchsuchten Text. Hinweis: Das findet "test" irgendwo im Dateinamen bzw. Text.

Escape-Sequenzen:

Ein Backslash \ leitet eine Escape-Sequenz ein. Beispiele für Escape-Sequenzen:

\t | Tabulatorzeichen |
\xnn | Zeichen mit dem Hexadezimalcode nn | Beispiel: \x20 ist ein Leerzeichen
\\ | Findet einen Backslash |
\[ | Eckige Klammer auf: | Weil die eckige Klammer ein Metazeichen ist, muss man \[ schreiben, wenn man die Klammer selbst finden will.

\. Findet einen Punkt ("." allein findet irgend ein Zeichen, siehe unten)

Die Zeichentabelle charmap.exe (sofern installiert) zeigt den Zeichencode der meisten Spezialzeichen an. Mit dem Taschenrechner von Windows können Sie den Dezimalcode in Hexadezimal umrechnen.

Zeichenklassen:

Zeichen in eckigen Klammern bilden eine Zeichenklasse. Es wird genau ein Zeichen aus dieser Klasse gefunden. Mit einem Bindestrich werden Gruppen definiert, etwa [a-z]. Ein ^ am Anfang findet alle Zeichen ausser den genannten.

Beispiele:

[aeiou] Findet genau einen dieser Vokale.

[^aeiou] Findet alles ausser einem Vokal

M[ae][iy]er Findet Herrn Meier in allen möglichen Schreibweisen: Mayer, Meyer, Maier, Meier. Sehr nützlich, wenn man sich nicht mehr an die genaue Schreibweise erinnern kann!

Metazeichen

Hier eine Liste der wichtigsten Metazeichen:

^ Zeilenanfang

$ Zeilenende

. Ein beliebiges Zeichen

\w ein Buchstabe, eine Ziffer oder der Unterstrich

\W das Gegenteil von \w

\d eine Ziffer

\D keine Ziffer

\s ein Worttrennzeichen (Leerzeichen, Tabulator etc)

\S kein Worttrennzeichen

\b findet eine Wortgrenze (Kombination aus \s und \S)

\B Gegenteil von \b

Iteratoren

Iteratoren stehen für Wiederholungen des Zeichens links des Iterators.

* Zeichen kommt nicht oder mehrmals vor

+ Zeichen kommt mindestens einmal vor

{n} Zeichen kommt genau n-mal vor

{n,} Zeichen kommt mindestens n-mal vor

{n,m} Zeichen kommt mindestens n-mal, max. m-mal vor

All diese Operatoren sind "gierig", d.h. sie nehmen so viele Zeichen, wie sie bekommen können. Ein nachgestelltes Fragezeichen macht den Operator "genügsam", d.h. er nimmt nur so viele Zeichen wie nötig. Beispiel: "b+" angewandt auf den Zielstring "abbbbc" findet "bbbb", "b+?" findet "b".

Alternativen

Alternativen stehen in runden Klammern, und werden durch einen senkrechten Strich getrennt.

Beispiel: (Hans|Fritz|Peter) findet einen der Namen Hans, Fritz oder Peter.

Teilausdrücke für Suchen und Ersetzen

Textteile in Klammern gelten als Teilausdrücke.

Beispiel: Wenn man in einer MP3-Datei Titel und Interpret vertauschen will, die durch einen Bindestrich und zwei Leerzeichen getrennt sind (Titel - Interpret.mp3), so kann man das so lösen:

Suchen nach: (.*) - (.*)\.mp3

Ersetzen durch: $2 - $1.mp3

Dabei steht $1 für den Text in der ersten Klammer, $2 für den in der 2. Klammer.

Rückwärtsreferenzen

\n Findet Teilausdruck n ein weiteres Mal im Suchresultat.

Beispiel: (.+)\1+ Findet z.B. abab (wobei das erste ab von .+ gefunden wird, das zweite von \1+

Modifikatoren

Schalten die Funktionsweise von regulären Ausdrücken um.

(?i) Ignoriere Gross-/Kleinschreibung.

(?-i) Beachte Gross-/Kleinschreibung.

(?g) Schalte in den "gierig"-Modus (standardmässig aktiv)

(?-g) Schalte in den "genügsam"-Modus, so dass "+" dasselbe bewirkt wie "+?"