[IDS-Logo] Online-Hilfe zu COSMAS II/win: Syntax der zeilenorientierten Suchanfragesprache
Syntax der ZeileneingabeSuchoperatorenWortformoperatorenreguläre Ausdrücke

Reguläre Ausdrücke mit #REG()

Für die Formulierung von Suchbegriffen mittels erweiterten regulären Ausdrücken kann der Operator #REG eingesetzt werden. Pro Suchanfrage sind mehrere davon möglich. Die regulären Operatoren *, ? und + werden in COSMAS II zwar ebenfalls als Platzhalter-Operatoren eingesetzt; innerhalb von #REG() werden sie jedoch nach einer anderen Syntax eingesetzt.

Inhalt

Syntax

Der Operator #REG() kann einen oder mehrere reguläre Ausdrücke1 aufnehmen, z.B. #REG(Ausdruck) oder #REG(Ausdr1 Ausdr2 etc.). Jeder Ausdruck steht für eine Wortform und generiert eine eigene temporäre Wortformliste. Die verschiedenen Ausdrücke werden intern durch ein logisches oder im Endergebnis zusammengeführt.

Die Syntax der erweiterten regulären Ausdrücke ist zu umfangreich, als dass sie hier beschrieben werden könnte. Sie kann allerdings überall im Internet nachgelesen werden. Mit den zahlreichen nachfolgenden Beispielen können schon etliche interessante Fälle abgedeckt werden.

Folgende Einschränkungen seien allerdings an dieser Stelle erwähnt: vordefinierte Symbole wie \< (Wortanfang), \> (Wortende), \w (Klasse der alphanumerischen Zeichen) und /W (Klasse aller nicht-alphanumerischen Zeichen) verhalten sich anders als erwartet und sollten eher vermieden werden.

Bemerkung

Beachten Sie bitte, welche Option einen Einfluss auf die Ausführung von #REG() hat.

Beispiele

#REG(Archi.*ung)

Damit werden Wortformen gesucht, die Archi und ung enthalten. Abhängig von der eingestellten Option Groß-/Kleinschreibung beachten wird hierbei die Groß-/Kleinschreibung der Zeichen gegenüber dem regulären Ausdruck beachtet oder nicht. Die Teilbegriffe Archi bzw. ung werden nicht nur am Wortanfang und -ende gesucht, sondern auch innerhalb der Wortformen.

#REG( ^Archi.*ung$ )

Durch das Einfügen der Operatoren ^ (für Wortanfang) und $ (für Wortende) werden einzig die Wortformen gesucht, die mit Archi beginnen und mit ung enden.

#REG( Verschlusss?ache )

Hiermit werden Varianten von Verschlusssache mit 2 oder 3 's' gesucht.

#REG( Redakteur(s|e|en|in|innen)? )

Hiermit werden mit Hilfe der runden Klammern Varianten von Redakteur mit den fakultativen Endungen s, e, en, in und innen gesucht.

Siehe hierzu auch den Hinweis zu den runden Klammern weiter unten.

#REG( ^1[89][0-9][0-9]$ )

Damit lassen sich Jahreszahlen zwischen 1800 und 1999 suchen.

#REG( ^1[89][0-9]{2}$ )

Durch die Angabe von {2} lassen sich in etwas kompakterer Form die Jahreszahlen zwischen 1800 und 1999 suchen.

#REG( ^[0-9]{2}\.[0-9]{2}\.[0-9]{2,4}$ )

Wieder ein regulärer Ausdruck für Datumsangaben im Format 21.10.2005 oder 21.10.05. Da der einfache Punkt in regulären Ausdrücken die Bedeutung eines beliebigen Zeichens hat, muss hier \. geschrieben werden, um genau den Punkt zu spezifizieren.

#REG( ^[^0-9]*Uhr )

Gefunden werden hiermit Varianten von Uhr, bei denen zwischen dem Wortanfang und der Zeichenkette Uhr keine Ziffern vorkommen. Damit werden z.B. Angaben wie 19Uhr, 18.30Uhr etc. vermieden.

#REG( ^[^-]*bahn[^-]*$ )

Hiermit werden, unter Ausschluss jeglichen Bindestrichs, Wortbildungen von Bahn gesucht.

#REG( ^[^-]*bahn-[^-]*$ )

Durch das hinter bahn eingefügt - werden nun Wortbildung von bahn mit genau 1 Bindestrich gesucht. Gefunden werden z.B. Eisenbahn-Gesellschaft, bahn-übliche, etc..

#REG( ^[^-]{4,6}-[^-]{4,6}-[^-]{4,6}$ )

Gesucht werden hiermit Wortzusammensetzungen bestehend aus genau 2 Bindestrichen und drei Teilen mit 4 bis 6 Zeichen. Gefunden werden z.B. "Alte-Welt"-Wirt, "Sisi"-Gedenk-Kuchen, "Tante-Emma"-Laden, Zwölf-Punkte-Skala, etc.

#REG( ^[[:upper:]][[:lower:]]{2,5}[[:upper:]][[:lower:]]+ )

Sogenannte Zeichenklassen können in der Form [[:upper:]] oder [[:digit:]] spezifiziert werden. Das obige Beispiel sucht nach Wortformen mit mindestens 1 Binnenmajuskel nach folgendem Muster:

zuerst eine Majuskel, gefolgt von 2-5 Minuskeln, gefolgt von genau 1 Binnenmajuskel, gefolgt von mindestens 1 Minuskel.

Gefunden werden Wortformen wie AbiWord, ActionFirst, ÜberLeben, etc. aber auch ActionFormBean mit mehreren Binnenmajuskeln.

Weiterführendes Beispiel

#COND( #REG( ^Archi.*ung$ ), :-sa)

Reguläre Ausdrücke können auf diese Art mittels des #COND()-Operators an bestimmten Positionen im Text gesucht werden. In diesem Beispiel werden Wortformen gefunden, die nicht am Satzanfang stehen.

Zu beachten ist in diesem Fall folgendes: der reguläre Ausdruck erzeugt in einem ersten Schritt eine temporäre Wortformliste zu ^Archiv.*ung$ ohne die Position im Text zu überprüfen. Erst im zweiten Schritt findet der Vorgang statt, der die Wortformen am Satzanfang rausfiltert.

Hinweis zu der Suche nach Umlauten, Zeichen mit Diakritika und dem ß

Das Modul für die Umsetzung der regulären Ausdrücke ist auf die westeuropäischen Sprachen von ISO-8859-1 (= Latein 1) eingestellt. Damit lassen sich Umlaute, Zeichen mit Diakritika und das ß zusammen mit den Zeichen des lateinischen Alphabets als Zeichenklassen abfragen, wie in der nachfolgenden Tabelle zu sehen ist. Achten Sie dabei ganz besonders auf das Problem mit dem ß.

Klasse Option
Groß-/Klein
Umlaute  ß   andere
Zeichen
mit Diakr.
Kommentar
[[:alpha:]] egal ja ja ja alphab. Zeichen
[[:alnum:]] egal ja ja ja alphab. Zeichen und Ziffern
[[:lower:]] egal ja ja ja alphab. Zeichen klein geschrieben
[[:upper:]] egal ja nein ja alphab. Zeichen groß geschrieben;
ß nicht als Großbuchstabe bekannt.
[a-z] beachten ja ja ja alphab. Zeichen klein geschrieben
[a-z] ignorieren ja nein! ja alphab. Zeichen klein geschrieben;
Fehler: ß wird nicht gefunden!
[a-zß] egal ja ja ja alphab. Zeichen klein geschrieben

Hinweis zu den Klammern ( und )

Die runden Klammern werden innerhalb eines regulären Ausdrucks eingesetzt, um Alternativen auszudrücken, siehe dazu das Beispiel zu Redakteur. Achten Sie bitte darauf, die Klammern immer paarweise zu setzen, um Fehlermeldungen zu vermeiden.

Um runde Klammern als suchbare Zeichen einsetzen zu können, müssen diese in eckige Bereichsklammern geschrieben werden, also z.B. [(] oder mit anderen Zeichen zusammen, z.B. [()%$]. Beachten Sie, dass es in #REG zum diesem Zweck nicht möglich ist, die Klammern als Escape-Sequenz \( oder \) oder den gesamten Ausdruck zwischen "..." zu schreiben.

Behalten Sie bitte auch in diesem Zusammenhang im Hinterkopf, dass Klammern und sonstige Satzzeichen getrennt von Wortformen gespeichert sind und deshalb getrennt gesucht werden müssen. Deshalb führen in COSMAS II reguläre Ausdrücke, die Wortformen und Satzzeichen kombinieren, zu keinem Ergebnis.

Optionen

Suche - Suchmodalitäten

In dieser Optionskategorie wirkt sich einzig die Option Groß-/Kleinschreibung beachten für andere Zeichen ebenfalls auf die Auflösung von regulären Suchausdrücken aus: ist sie eingeschaltet, wird die Groß-/Kleinschreibung des regulären Ausdrucks berücksichtigt (empfohlen), andernfalls nicht.

Die beiden anderen Optionen der Suchmodalitäten haben hier keine Wirkung.

Suche - Expansionslisten und Begrenzung der Ergebnismenge

Die Optionen für die Expansionslisten und die Begrenzung der Ergebnismenge sind für reguläre Ausdrücke ebenfalls wirksam.

Wortformlisten und Listenoptionen

 


1: die in COSMAS II angebotenen regulären Ausdrücke entsprechen der erweiterten GNU-Implementation.

COSMAS II, Zentrale DV-Dienste - 18. 01. 2018