|
Syntax der regulären Ausdrücke (Regex) |
Anfang Zurück Weiter |
|
Für Fälle, in denen eine einfache Mustererkennung ausreichend ist, wird die native Mustererkennung von Opus empfohlen. Für anspruchsvollere Zwecke ist in vielen Dialogen von Opus eine vollständige Mustererkennung vorhanden. Normalerweise, wenn lediglich eine Suche nach einem Teilstring innerhalb eines Strings ausgeführt wird, so muss die Suchsequenz exakt sein. Wenn also nach einem Teilstring “abc” gesucht wird, dann muss der durchsuchte String genau diese Zeichen in der gleichen Folge enthalten, damit ein Treffer zurückgegeben wird. Es ist möglich, diese Suche auf eine nicht case-sensitive Suche abzuändern, in denen bei der Suche nach dem Teilstring “abc” auch Strings wie “Abc” oder “ABC” usw. zu einem Suchtreffer führen würden. Der verwendete case wird also ignoriert, aber die genaue Reihenfolge bliebe dennoch relevant. Gelegentlich ist eine nicht case-sensitive Suche immer noch nicht genau genug. Wenn beispielsweise nach einem nummerischen Wert gesucht werden soll, führt das oft dazu, dass im Prinzip nach jeder Ziffer einzeln gesucht werden müsste. An diesem Punkt können reguläre Ausdrücke von großem Nutzen sein. Reguläre Ausdrücke sind Textmuster, die für Textvergleiche verwendet werden. Reguläre Ausdrücke sind Strings, die eine Mischung aus normalen Zeichen und speziellen Zeichen bzw. Kürzeln enthalten und auf diese Weise anzeigen, welche Regeln der Mustererkennung zur Anwendung kommen. Angenommen, es wird nach einer nummerischen Stelle gesucht, dann wäre der entsprechende reguläre Ausdruck für diese Suche “[0-9]”. Die Klammern zeigen an, dass der Suchstring mit dem in den Klammern eingeschlossenen Ziffernbereich verglichen wird und passen muss, um einen Treffer zu liefern. Der Bindestrich (-) zwischen 0 und 9 zeigt an, dass der Zahlenbereich zwischen 0 und 9 liegt. Jedes Zeichen, oder genauer, jede Ziffer zwischen 0 und 9 wird daher mit diesem regulären Ausdruck einen Treffer zurückliefern. Wenn nach einem bestimmten Zeichen buchstäblich (literal) gesucht werden soll, muss ein Backslash vor das gesuchte besondere Zeichen gesetzt werden. Zum Beispiel passt der reguläre Ausdruck für Einzelzeichen “\*” auf einen einzelnen Asterisk, also “*”. Die speziellen Ausdrücke werden im Folgenden kurz beschrieben:
Die Klammern dienen, abgesehen von ihrer Funktion, die Überprüfungsreihenfolge im regulären Ausdruck zu beeinflussen, als markierter Ausdruck, der so etwas wie einen temporären Speicher darstellt. Dieser Speicher kann benutzt werden, um gefundene Ausdrücke mit einem neuen Ausdruck zu ersetzen. Im Ausdruck für “ersetzen” kann ein Zeichen “&” angegeben werden, der den im verglichenen Ausdruck gefundenen Substring repräsentiert. Zum Beispiel, wenn der Substring, welcher zu dem regulären Ausdruck passte “ABCD” sei, dann würde ein “Replace” mittels “xyz&xyz” einen String “xyzABCDxyz” erzeugen. Der Ausdruck für dieses Replace kann auch ausgedrückt werden als “\0”, beispielsweise “xyz\0xyz”. Das “\0” zeigt einen markierten Ausdruck an, der den sämtlichen gefundenen und passenden Substring repräsentiert. Analog dazu lassen sich auf diese Weise auch andere markierte Ausdrücke wie “\1” oder “\2” für progressiv passende Strings verwenden. Zu beachten ist hierbei, dass, obwohl der markierte Begriff 0 immer definiert ist, die markierten Ausdrücke 1, 2 etc. nur dann als definiert gelten, wenn die in der Suche benutzten regulären Ausdrücke genügend Sätze von Klammern haben.
Hier sind ein paar Beispiele:
Wenn ein regulärer Ausdruck mit dem Befehl Rename benutzt wird, kann ein #-Symbol an den “alten” Dateinamen angehängt werden, um anzuzeigen, dass das Muster wiederholt werden darf. Dies erlaubt auf effektive Weise, reguläre Ausdrücke für ein systematisches “Suchen und Ersetzen” einzusetzen. Die maximale Anzahl der gewünschten möglichen Wiederholungen kann durch eine auf das “#” folgende Nummer angegeben werden, zum Beispiel:
(.*) - (.*)#5
|