Suchen und Ersetzen mit regulären Ausdrücken

Verschiedene Anleitungen
Gesperrt
MarkusN
Site Admin
Beiträge: 163
Registriert: 15. Okt 2021 18:12
Betriebssystem: Windows 10/11 Pro
DOpus Version: 13

Suchen und Ersetzen mit regulären Ausdrücken

Beitrag von MarkusN »

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
Gesperrt