Syntax der Zeileneingabe → Suchoperatoren → Wortformoperatoren → regulä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
- Beispiele
- weiterführendes Beispiel
- Hinweis zu den Klammern
- Hinweis zu der Suche nach Umlauten, Zeichen mit Diakritika und dem ß
- Optionen
- Begrenzung und zusätzliche Listenoptionen
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
- Wortformlisten können verwaltet werden.
- Die Erzeugung von Wortformlisten mit
#REG
kann zusätzlich mit Listenoptionen gesteuert werden. - Lesen Sie hier mehr über die automatische Segmentierung von langen Wortformlisten.
1: die in COSMAS II angebotenen regulären Ausdrücke entsprechen der erweiterten GNU-Implementation.