Reguläre Ausdrücke sind nicht die einfachste Art, etwas zu ersetzen, aber mit Sicherheit die flexibelste. Man setzt sie daher vor allem dann ein, wenn man größere Mengen von Texten ersetzen will und mit den anderen Ersetzungsmethoden nicht oder nur umständlich zum Ziel kommt.
Im Grunde werden dabei Bereiche im Ursprungsnamen festgelegt, die dann umgeordnet oder verändert werden.
Eine Erklärung der regulären Ausdrücke findet man bei Wikipedia: Reguläre Ausdrücke bei Wikipedia
Teile der regulären Grammatik
. irgendein Zeichen
| Auswahl
[] Zeichenklasse
^ Zeilenanfang
$ Zeilenende
() Gruppe
\ danach folgt normaler Text
* beliebig oft oder gar nicht
? einmal oder gar nicht
+ mindestens einmal
Wie man es in DOpus macht
[a-z]{n} Buchstaben zwischen a und z genau n-mal wird in DOpus folgendermassen aufgebaut:
[a-z][a-z]?
(im unserem Beispiel ist n=2, sind es mehr, so muss man diesen Teil entsprechend oft wiederholen)
[a-z]{n,} Buchstaben zwischen a und z mindestens n-mal wird in DOpus folgendermaßen aufgebaut:
[a-z][a-z]+
(im unserem Beispiel ist n=2, sind es mehr, so muss man diesen Teil entsprechend oft wiederholen)
Suchen einer E-Mail wie support@directory-opus.de
([a-z0-9]*)\@(.*)\.[a-z][a-z]
Suchen von txt-Dateien wie 1234-56-78-name.txt
(..........)\-(.*)\.txt
hier für die erste Klammer soviel Punkte wählen wie Zeichen gesucht werden
oder für den Fall das die Bindestriche wichtig sind:
(....)\-(..)\-(..)\-(.*)\.txt
oder für den Fall, dass vorne nur Zahlen und hinten nur Buchstaben stehen sollen:
([0-9][0-9][0-9][0-9])\- ([0-9][0-9]) \- ([0-9][0-9])\-([a-zA-Z])\.txt
Konkretes Beispiel für DOpus
Suche nach einer txt mit dem Aufbau 1234-56-78-name.txt und soll umbenannt werden in name-1234-56-78.txt:
Alter Name: ([0-9][0-9][0-9][0-9])\- ([0-9][0-9]) \- ([0-9][0-9])\-([a-zA-Z])\.txt
Neuer Name: \4-\1-\2-\3.txt
Dateinamen aus 2 Teilen tauschen
dateinamebereich1-dateinamebereich2.txt
soll später so aussehen
dateinamebereich2-dateinamebereich1.txt.
Sagen wir, die Dateinamenbereiche bestehen nur aus kleinen und großen Buchstaben und Zahlen:
Alter Name: ([0-9a-zA-Z])\-([0-9a-zA-Z])\.txt
Neuer Name \2-\1.txt
oder (einfach)
Alter Name: (.*)\-(.*)\.txt
Neuer Name \2-\1.txt
Suche nach dem UK-Postcode mit RegEx
So würde man es normal versuchen:
\b[A-Z]{1,2}[1-9]{1,2}\s+[0-9][A-Z]{1,2}\b
So setzt man es in DOpus ein:
^[A-Z][A-Z]?[1-9][ ][0-9][A-Z][A-Z]?
Ersetzen von [...]
Dateiname [Text].doc soll umbenannt werden in Dateiname.doc
Die Schwierigkeit hierbei ist, dass sich die Klammern [ und ] Elemente der Syntax sind, daher muss jeweils ein \ vorangestellt werden.
Alter Name: (.*) \[(.*)\]\.doc
Neuer Name: \1.doc