Regex
iX
Perls reguläre Ausdrücke
Zeichen und Klassen
. | ein beliebiges Zeichen außer Newline; paßt im Singleline-Mode auf das n-Zeichen |
x | ein x |
Wort | "Wort" |
[xyz] | Zeichenklasse: trifft x, y oder z |
[a-z] | Zeichenklasse: paßt auf jedes Zeichen zwischen a und z |
(Wort) | eingefangenes "Wort", wird in $i gespeichert; mit i im Ausdruck verwendbar |
(?:Wort) | gruppieren, aber nicht speichern |
x(?=y) | x wenn y folgt; Klammern speichern nicht |
x(?!y) | x wenn kein y folgt. Klammern speichern nicht |
w | Wortzeichen |
w+ | ganzes Wort (Wortzeichen mit folgendem Leer- oder Satzzeichen) |
W | Nicht-Wortzeichen: Satzzeichen, Leerzeichen und so weiter |
s | Leerraum: Leerzeichen, Tabulator, Newline |
S | alles, was kein Leerraum ist: Buchstaben, Ziffern et cetera |
b | Wortgrenze, wie in vi < und > |
d | Ziffer |
Quantifizierer
* | vorangehender Ausdruck beliebig oft, auch gar nicht |
+ | vorangehender Ausdruck beliebig oft, mindestens einmal |
? | vorangehender Ausdruck höchstens einmal |
{4} | vorangehender Ausdruck genau 4mal |
{2,7} | vorangehender Ausdruck 2- bis 7mal |
Sonderzeichen
| | oder, auf Zeichen und Gruppen anwendbar: (ganz)|(gar nicht) |
^ | Anfang der Zeile oder des Ausdrucks |
$ | Ende der Zeile oder des Ausdrucks |
[^x] | alles, was nicht "x" ist |
Backslash, nimmt Sonderzeichen die Spezialbedeutung | |
U | alle Zeichen bis E in Großbuchstaben |
L | alle Zeichen bis E in Kleinbuchstaben |
Q | alle Sonderzeichen bis E mit schützen |
E | Ende von U, L, Q |
Operatoren und Modifizierer
m// | suche |
s/// | suche und ersetze |
s### | suche und ersetze, aber verwende # als Trenner |
//g | jedes Vorkommen finden |
//i | Groß- und Kleinschreibung ignorieren |
//m | Multiline-Mode, ^ und $ passen auf logische Zeilenanfänge und -enden, . matched kein Newline |
//s | Singleline-Mode, ^ und $ erkennen Anfang/Ende des gesamten Strings, . matched Newline |
//sm | kombiniert: Logische Zeilen plus Newline |
//x | Kommentare und Leerzeichen im Suchen-Teil erlaubt |
s///e | kann im Ersetzungsteil einen Ausdruck erst evaluieren und dann ersetzen.; erlaubt ist alles, was einen ersetzungsfähigen Ausdruck ergibt |
Spezialvariablen
$1 | Wert der ersten einfangenden Klammer; nur im Ersetzungsteil verwenden |
1 | Rückbezug auf die erste einfangende Klammer |
$& | letzter gefundener Treffer |
$' | Text nach dem Treffer |
$` | Text vor dem Treffer |
$+ | Treffer der letzten einfangenden Klammer |
$/ | Zeilentrenner (Input Record Separator) |
Total Commander
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 sind vor allem für Profis gedacht, können aber auch im Büroalltag zum Finden bestimmter Dokumente nützlich sein (siehe Beispiele unten).
Total Commander unterstützt reguläre Ausdrücke in folgenden Funktionen:
- Befehle - Suchen (im Dateinamen und im Dateiinhalt!)
- Im Lister
- Im Mehrfach-Umbenenntool
- Im Markieren-Dialog
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. 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.
[ Eckige Klammer auf: Weil die eckige Klammer ein Metazeichen ist, muss man [ schreiben, wenn man die Klammer selbst finden will.
\ Findet einen Backslash.
. Findet einen Punkt ("." allein findet irgend ein Zeichen, siehe unten).
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. Ist in Total Commander standardmässig aktiv für Dateinamen.
(?-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 "+?"
Die anderen Modifikationen sind bei Total Commander nicht relevant, weil das Programm nur innerhalb einer Zeile suchen kann.
Total Commander verwendet die freie Delphi-Bibliothek TRegExpr von Andrey V. Sorokin: http://regexpstudio.com/
Einige der oben aufgeführten Erklärungen stammen aus der Hilfe zu dieser Bibliothek.