Double Commander verwendet die freie Bibliothek TRegExpr von Andrey Sorokin.
Reguläre Ausdrücke (Regular Expressions) sind eine weit verbreitete Methode zur Definition von Suchmustern in Texten. Spezielle Zeichen (Metazeichen) ermöglichen es, Bedingungen wie den Zeilenanfang oder das mehrfache Vorkommen von Zeichengruppen festzulegen.
Double Commander unterstützt reguläre Ausdrücke in folgenden Funktionen:
Die TRegExpr-Bibliothek unterstützt sowohl ANSI als auch Unicode.
Jedes normale Zeichen entspricht sich selbst. Um Metazeichen als normalen Text zu suchen, muss ein Backslash \ vorangestellt werden (z. B. \^ für das Zeichen "^").
| Beispiele | |
|---|---|
| Ausdruck | Ergebnis |
| foobar | Sucht nach dem Text foobar |
| \^FooBar | Sucht nach dem Text ^FooBar |
Ähnlich wie in C oder Perl können Sonderzeichen wie Tabs (\t) oder Zeilenumbrüche (\n) verwendet werden.
| Sequenzen | |
|---|---|
| \xnn | Zeichen mit Hex-Code nn |
| \t | Tabulator (TAB) |
| \n | Zeilenvorschub (LF) |
| \r | Wagenrücklauf (CR) |
In eckigen Klammern [] kann eine Liste von Zeichen angegeben werden, von denen eines zutreffen muss. Ein ^ am Anfang der Klammer negiert die Auswahl.
| Beispiele | |
|---|---|
| [a-z] | Alle Kleinbuchstaben von a bis z. |
| [^0-9] | Jedes Zeichen, das KEINE Ziffer ist. |
Metazeichen bilden den Kern der regulären Ausdrücke.
| ^ | Zeilenanfang |
| $ | Zeilenende |
| . | Jedes Zeichen (außer Zeilentrenner, falls Modifikator s aus) |
| \w | Alphanumerische Zeichen und "_" (entspricht [a-zA-Z0-9_]) |
| \d | Ziffern |
| \s | Leerraum (Space, Tab, etc.) |
| * | 0-mal oder öfter ("gierig") |
| + | 1-mal oder öfter ("gierig") |
| ? | 0-mal oder 1-mal ("gierig") |
| {n,m} | Mindestens n-mal, maximal m-mal. |
Ein angehängtes ? (z. B. *?) macht den Quantifizierer "genügsam" (non-greedy), d. h. er nimmt so wenig Text wie möglich.
Klammern ( ... ) definieren Gruppen. Diese können im "Ersetzen"-Feld mit $1, $2 usw. referenziert werden.
Beispiel: Datum 21.01.2018 in 2018.01.21 umwandeln:
Suche: (\d{2})\.(\d{2})\.(\d{4})
Ersetzen: $3.$2.$1
Bedingungen, die prüfen, was vor oder nach einem Text steht, ohne diesen Teil in das Suchergebnis aufzunehmen.
foo(?=bar) – "foo" nur, wenn "bar" folgt (Positive Lookahead).(?<=foo)bar – "bar" nur, wenn "foo" davor steht (Positive Lookbehind).Beeinflussen das Verhalten des gesamten Ausdrucks oder von Teilen davon (z. B. (?i) für ignorieren der Groß-/Kleinschreibung).