Jeder kennt die Situation: Ich suche nach einem mir bekannten Wort, aber ich weiß nicht mehr genau, wie es richtig geschrieben wird. Schreibt sich die Maßeinheit der Energiedosis GRAY oder GREY? Oder gibt es womöglich beide Schreibweisen?
Unter RegEx besteht die Möglichkeit der Suche nach mehreren Alternativen. Hierfür ist der senkrechte Strich | zu verwenden:
GRAY|GREY
Das schwierigste an dieser Abfrage ist das Zeichen | auf der Tastatur zu finden. Es liegt auf der deutschen Tastatur direkt links neben der Y-Taste. Dies ist die Taste mit den Zeichen <, > und |. Um den senkrechten Strich zu bekommen, müsst ihr vorher die Alt Gr-Taste drücken, die Taste gedrückt lassen und dann zusätzlich besagte Taste links neben dem Y drücken.
Jetzt probieren wir den Befehl aus, als Kategorie lassen wir hier wie auch für die folgenden Beispiele nur den RD zu. Dadurch werden mögliche Treffer in den nicht aktiven Kategorien gelb unterlegt angezeigt:
Diese Suche brachte mehr, als wir eigentlich wissen wollten, weil wir hier keine Ankerzeichen gesetzt haben. Damit sucht RegEx das ganze SuperDic nach Wörtern ab, die entweder die Suchmuster GRAY oder GREY enthalten, egal, ob diese Suchmuster am Anfang, in der Mitte oder am Ende eines Wortes stehen. Diese Treffer können übrigens mit Hilfe der Klammerung auch mit dem Muster „GR(A|E)Y“ erreicht werden.
Mit „^GRAY$|^GREY$“ würden wir nur GRAY als Treffer matchen. GREY als einzelnes Wort hat also im SuperDic keinen Eintrag.
| trennt zwei oder mehrere Alternativen. Die Suche ist erfolgreich, wenn eine der Alternativen gefunden wird.
Wir versuchen das ganze jetzt nochmals, erweitern die Suche um den Vokal U: „GRAY|GREY|GRUY“ - diese Abfrage kann auch mit „GR(A|E|U)Y“ dargestellt werden.
Gibt es Wörter, die auch das Suchmuster GRUY enthalten?
Mit dem Wissen um die Oder-Funktion sind wir nun in der Lage, die am Anfang des Tutorials gestellte Aufgabe zu beantworten: die Suche nach allen Wörtern mit bis zu 4 Buchstaben Länge, die mindestens ein C enthalten, aber ohne K noch H auskommen.
Zum Einsteigen beschränken wir uns erst einmal auf maximal dreibuchstabige Wörter. Das Grundprinzip dieser Abrage ist relativ simpel:
Man formuliere zunächst eine Abfrage, wo das C an der ersten Stelle des Wortes steht und schließe dabei die Buchstaben H und K aus: "^C[^HK][^HK]$" (alternativ möglich: "^C[^HK]{0,2}$" – siehe Lektion 7)
Dann formuliere man eine Abfrage, wo das C an der zweiten Stelle des Wortes steht und schließe dabei die Buchstaben H und K aus: "^[^HK]C[^HK]$"
Dann formuliere man eine Abfrage, wo das C an der letzten Stelle des Wortes steht und schließe dabei die Buchstaben H und K aus: "^[^HK][^HK]C$" (alternativ möglich: "^[^HK]{0,2}C$" – siehe Lektion 7)
Jetzt kommt der Casus Knacksus: Wir verbinden die drei Abfragen mit dem dem Oderzeichen „|“ !
„^C[^HK][^HK]$|^[^HK]C[^HK]$|^[^HK][^HK]C$"
Wir erzielen mit dieser Abfrage 21 Treffer (Stand SuperDic auch per 01/2011)
Mit diesem Schema lässt sich auch die Suche nach bis zu vierbuchstabige Wörter ohne H und K bewerkstelligen:
Damit beenden wir diese Tutorialserie. Ich will nicht ausschließen, dass es für einige der hier aufgeführten Abfragen möglich ist, sie noch kürzer zu formulieren, ich bin alles andere als ein Experte für RegEx.
Wichtig erschien mir in diesem Zusammenhang, euch die Grundfunktionen von RegEx näherzubringen. Ich hoffe, dass dies mir einigermaßen gelungen ist. In den nächsten Tagen werde ich zusammen mit Bussinchen die in Lektion 5 enthaltene Tabelle noch um einige Abfragebeispiele erweitern und online stellen.
Download: Geros Superdic, was sonst! | Discussion: Forum | News: Twitter | ... und im übrigen bin ich der Meinung, dass Wordfinder beim online-Spiel pfui sind!