Lektion 5
Die Funktion regulärer Ausdruck: Die wichtigen Ankerzeichen
Bevor wir die Ankerzeichen kennenlernen, wollen wir das Gelernte nochmals Revue passieren lassen. Unter der Wortsuche stehen uns drei Funktionen bzw. Sucharten zur Verfügung. Suchanfragen führen abhängig von der gewählten Funktion zu unterschiedlichen Ergebnissen. Die Tabelle veranschaulicht dies nochmals, wobei wir bei den Beispielen alle Kategorien zulassen:
Geros html-Tabelle L5 Wir suchen | per Variation | per Wildcard | per Regulärem Ausdruck (RegEx) |
CIS | CIS, SI, SIC Anmerkung: Es werden nur Wörter ausgegeben, die mindestens zwei (es gibt keine Einbuchstabenwörter) der Buchstaben CIS enthalten | CIS Anmerkung: Die Funktion Wildcard sucht genau nach dem angefragen Wort | Diese Suche matcht 21 Treffer: CICISBEO CICISBEOS CIS CISLAWENG DOLCISSIMO GALICISCH GALICISCHE GALICISCHEM GALICISCHEN GALICISCHER GALICISCHES GALICISCHS GLACIS MACIS PRECIS RAZNJICIS SAUCISCHEN SAUCISCHENS VIVACISSIMI VIVACISSIMO VIVACISSIMOS Anmerkung: Die Funktion RegEx sucht nach Wörtern, die CIS enthalten, egal ob CIS am Anfang, am Ende oder irgendwo dazwischen steht; dazu zählt auch das Wort CIS selbst |
CIS? | AI AIS AS BI BIS CES CHI CHIS CIS DIS DISC EI EIS ES FIS GIS HI HIS ICH ICHS ID IDS IM IN INS ISS IST IX MI OS PI PIS PSI QI QIS SCH SCHI SEC SEI SI SIC SICH SICK SIE SIR SKI SO ST SÄ TI TIC TICS UI XI XIS ÄS ÖS ÖSI Anmerkung: Es werden nur Wörter ausgegeben, die mindestens zwei (es gibt keine Einbuchstabenwörter) der Buchstaben CIS? enthalten, wobei das Fragezeichen als Platzhalter für einen beliebigen Buchstaben dient | Kein Treffer, es gibt keine vierbuchstabigen Wörter die mit CIS anfagen, selbst wenn der 4. Buchstabe wie hier x-beliebig sein darf | Diese Suche matcht 738 Treffer! Darunter sind die obigen CIS-Wörter enthalten, aber auch Wörter, die nur die Zeichenfolge CI aufweisen: BOCCIA CALCIT CICERO CIDRES CIMBAL CIRCEN CIRCUS CITRAT CITRIN CIVETS FACIES GLACIS ICINGS LACIER MEDICI PRECIS RACING RECIPE SCILLA SPACIG ACIDS CIDRE CIRCA CIRCE CIRES CITYS CIVET FECIT ICING MACIS MERCI SCIFI ACID CIAO CIRE CITO CITY FICI VOCI CIS Anmerkung: die Darstellung beschränkt sich hier auf maximal 6-buchstabige Wörter |
CSI | CIS, SI, SIC Anmerkung: das Ergebnis entspricht der Anfrage CIS weiter oben; bei (und nur bei) der Suche per Variation spielt es keine Rolle, in welcher Reihenfolge wir die Buchstaben eingeben | Kein Treffer, es gibt zumindest im Scrabblereich kein Wort CSI | CSIKOS Anmerkung: das Wort CSIKOS (=ungarischer Pferdehirt) enthält das Suchmuster CSI |
CIS* | Die Suche Variation unterstützt nicht das Zeichen Stern | CIS CISLAWENG Anmerkung: Es werden nur Wörter ausgegeben, die mit CIS anfangen, wobei der * als Platzhalter für 0 bis beliebig viele Zeichen stehen darf | Diese Abfrage matcht ebenso viele Treffer wie die Abfrage CIS? Anmerkung: In dieser Abfrage spielt der Unterschied zwischen * und ? keine Rolle, weil die Zeichen * und ? am Ende der Suchanfrage stehen - mehr dazu in späteren Lektionen |
?CIS | Diese Suche matcht ebenso 58 Treffer wie die Suche CIS? Anmerkung: bei (und nur bei) der Suche per Variation spielt es keine Rolle, in welcher Reihenfolge wir die Buchstaben eingeben | Kein Treffer, es gibt zumindest im Scrabblereich kein vierbuchstabiges Wort, das mit CIS endet Anmerkung: MACIS wäre ein Treffer auf die Suche: "??CIS" | Kein Treffer, denn diese Suche macht keinen Sinn: das Fragezeichen bezieht sich immer auf das voranstehende Zeichen - auf was soll es sich denn hier beziehen, wenn es am Anfang steht? |
CI.S | Die Suche Variation unterstützt nicht das Zeichen Punkt | Die Suche Wildcard unterstützt nicht das Zeichen Punkt | Diese Suche matcht 22 Treffer - gesucht werden hier alle Wörter, die CI, gefolgt von einem beliebigen Buchstaben und dann gefolgt von einem S, enthalten: ACIDS ASSOCIES BOCCIAS CALCITS CAPRICCIOS CAPRICCIOSO CARPACCIOS CATENACCIOS DOLCISSIMO FACIES FOCACCIAS KAPRICCIOS PASTICCIOS SPACIGSTE SPACIGSTEM SPACIGSTEN SPACIGSTER SPACIGSTES STREPTOMYCINS VIVACISSIMI VIVACISSIMO VIVACISSIMOS |
CI.?S | Die Suche Variation unterstützt nicht das Zeichen Punkt | Die Suche Variation unterstützt nicht das Zeichen Punkt | Diese Suche matcht 39 Treffer - 17 mehr als im obigen Beispiel: CICISBEO CICISBEOS CIS CISLAWENG GALICISCH GALICISCHE GALICISCHEM GALICISCHEN GALICISCHER GALICISCHES GALICISCHS GLACIS MACIS PRECIS RAZNJICIS SAUCISCHEN SAUCISCHENS |
Das letzte Beispiel ist interessant: hier kombinieren wir nämlich den Punkt mit dem Fragezeichen! Der Punkt stünde hier zwar für einen beliebigen Buchstaben, das Fragezeichen danach stellt diesen Buchstaben im wahrsten Sinne des Wortes wieder in Frage: dieser beliebige Buchstabe kann sein, muss es aber nicht.
Diese Frage hieße übersetzt: Lieber Computer, ich suche Wörter, die CIS enthalten, aber ich ich will auch die Wörter sehen, wo zwischen dem I und dem S ein x-beliebiger Buchstabe steht. Zeig mir mal deshalb auch diese Wörter mit an.
Hier stellten wir gleich die erste relativ schwere Hausaufgabe:
1. Welche Wörter werden per RegEx-Suche sowohl mit „CIS“, „CI.S“ als auch „CI.?S“ immer gefunden?Wir stellen fest, dass es bei der Suche mit RegEx nicht darauf ankommt, ob sich der Suchstring am Anfang oder am Ende eines Wortes oder irgendwo dazwischen befindet. Da hat man es mit der Suche Wildcard leichter. Zeit zu lernen, wie wir unter RegEx Anweisungen formulieren können, die die Suche auf bestimmte Positionen innerhalb des Wortes beschränken:
Die Ankerzeichen!Hier die Erklärung:
^ kann am Anfang eines Suchmusters stehen und bedeutet, dass das Suchmuster am Anfang einer Zeichenfolge oder einer Zeile stehen muss. ^ZEICHEN findet z.B. Zeichen, Zeichenfilm oder Zeichenblock, nicht aber Handzeichen oder Abzeichen.
$ kann am Ende eines Suchmusters stehen und bedeutet, dass das Suchmuster am Ende einer Zeichenfolge oder Zeile stehen muss. ZEICHEN$ z.B. findet Zeichen, Abzeichen, Gütezeichen oder Tonzeichen, nicht aber Zeichenblock, zeichenhaft oder Zeichensaal.Circumflex (^) und Dollarzeichen ($) werden Anker genannt, weil sie selbst keine bestimmten Zeichen finden, aber das Suchmuster am Anfang oder am Ende der zu durchsuchenden Zeichenkette "verankern". Die beiden Anker können kombiniert werden. ^Zeichen$ z.B. findet nur ZEICHEN (d.h., es darf innerhalb der Zeichenfolge bzw. einer Zeile kein anderes Zeichen davor oder dahinter stehen und ist damit identisch mit der Abfrage ZEICHEN unter der Funktion Wildcard).
(Das Zeichen ^ Befindet sich auf den meisten Tastaturen links neben der Zahl 1. Drücken und danach die Leertaste betätigen)Mit diesem Wissen kommen wir unserer Aufgabe – das Finden aller drei- und vierbuchstabigen Wörter mit C, aber ohne H und K, etwas näher.
Als ersten Teilschritt suchen wir zunächst einmal alle Wörter, die mit C anfangen und maximal 4 Buchstaben haben. Dies erreichen wir durch den Befehl „
^C...?$“
Streng genommen müsste der Befehl „
^C..?.?$“ lauten. Warum?
Der Befehl „
^C...?$“ sucht zunächst nach dreibuchstabigen Wörtern, die mit C anfangen. Weiter sagt der Befehl, dass auch es auch vierbuchstabige Wörter sein dürfen (nicht müssen), weil dem dritten Punkt ein Fragezeichen nachgestellt ist. Gäbe es ein Wort CD - es würde durch die Suche nicht erfasst werden. Bei der Abfrage mit dem Befehl „
^C...?$“ nutzen wir unser Wissen, dass es im Scrabbleland keine zweibuchstabigen Wörter mit C gibt. Ihr könnt aber gerne den Suchbefehl „
^C..?.?$“ ausprobieren – das Ergebnis ist identisch mit der Abfrage „
^C...?$“.
Hier die nächsten Hausaufgaben:
2. mit welchem Befehl finde ich alle Wörter, die mit Q anfangen und maximal vier Buchstaben lang sind?
3. Wie viele Wörter sind es?
4. Welche Wörter sind davon nicht in der Kategorie Rechtschreibduden gelistet?Jetzt variieren wir die Frage: wir suchen alle Wörter, die an der zweiten Stelle ein C aufweisen und nicht länger als vier Buchstaben sind. Gleichzeitig wollen wir wissen, welche Wörter nicht in der Kategorie Rechtschreibduden gelistet sind. Dies erreichen wir durch den Befehl: „
^.C..?$“ . Dieses Mal deaktivieren wir vor der Abfrage alle Kategorien.
Die Wörter außerhalb der Kategorie RD sind gelb markiert.
Nun zur letzten Hausaufgabe:
5. Wir suchen alle drei- oder vierbuchstabigen Wörter, die mit C aufhören. Welcher der folgenden Befehle ist dafür am besten geeignet? Welche Schwächen weisen die anderen Befehle auf?
a: „^...C?$“
b: „^...C$“
c: „^...?C$“In der nächsten Lektion lernen wir unter anderem das Zeichen
+ kennen, dass von der Bedeutung her eine Mittelstellung zwischen den Zeichen ? und * darstellt.
+ Der voranstehende Ausdruck muss mindestens einmal vorkommen, darf aber auch mehrfach vorkommen. Mehr beim nächsten Mal.
Gero