Lektion 7 Der Ausschluss von Buchstaben bei der Wortsuche
In der heutigen Lektion kommen wir unserem großen Ziel, nämlich der Suche nach allen Wörtern mit einem (oder auch zwei) solitären C mit bis zu max. 4 Buchstaben Länge, deutlich näher.
Als ersten Schritt hierzu lernen wir, wie man sich bei der Wortsuche auf bestimmte Buchstaben konzentriert. Wir fangen ganz einfach an, gültig sind alle Kategorien:
Der Suchbefehl „^C...$“ liefert bzw. matcht alle vierbuchstabigen Wörter, die mit einem C anfangen. Es werden 61 Treffer gematcht:
Wir lernen hier den Begriff einer Zeichengruppe kennen:
Die eckigen Klammern umschließen eine Liste, einen Bereich von Zeichen oder beides. [abc] z.B. bedeutet "jedes einzelne Zeichen, das a, b oder c ist". Ein Bindestrich (-) zwischen zwei Zeichen definiert einen Bereich. [a-z] z.B. bedeutet "jedes einzelne Zeichen vom kleinen "a" bis zum kleinen "z""
Dies vorausgeschickt ist es uns nun ein Leichtes, alle vierbuchstabigen C-Wörter herauszufinden, wo der zweite Buchstabe in der ersten Hälfte des Alphabets sein muss: „^C[A-L]..$“ matcht 35 Treffer!
Man kann hier auch kombinieren: "^C[A-LU]..$" liefert neben diesen 35 Treffern zusätzlich 5 weitere Wörter, die mit CU anfangen:
CUPS CURE CURL CUTS CUTT
Mit der Abfrage „^C[A-GIJL-Ü]..$“ erreichen wir, dass der zweite Buchstabe weder ein H noch ein K kann, wir haben diese Buchstaben in der Definition der gültigen Zeichen für den bzw. im Klammerausdruck außen vor gelassen. Ergänzend ist anzumerken, dass die Umlaute AÖÜ in der Sortierreihenfolge nach dem Z kommen. Es werden 54 Treffer erzielt:
Allerdings erscheint dieser Suchbefehl doch etwas umständlich. Besser wäre es ihn so zu formulieren, dass alle Buchstaben mit Ausnahme von H und K gelten dürfen.
Das geht so: „^C[^HK]..$“
Für uns wirkt diese Abfrage auf den ersten Blick befremdlich: Das ^ ist doch ein Ankerzeichen, mit dem wir das Suchmuster am Anfang der zu durchsuchenden Zeichenkette bzw. hier der zu durchsuchenden Wörter „verankern“
Hier bitte ich aufzupassen: Es entspricht der Ökonomie von RegEx, mit möglichst wenig Zeichensymbolen auszukommen. Deswegen kann ein Symbol wie das ^ durchaus mehrere Bedeutungen haben, und zwar abhängig vom Kontext, in dem es verwendet wird. Innerhalb einer eckigen Klammer wird ^ wie folgt interpretiert:
[^...] findet jedes einzelne Zeichen, das nicht in der Zeichengruppe enthalten ist. [^0-9xyz] findet z.B. jedes einzelne Zeichen, das weder eine Ziffer noch einer der Buchstaben x, y oder z ist.
"^C[^HK][^HK][^HK]$" matcht zum Beispiel alle vierbuchstabigen Wörter, die mit C anfangen und ohne H und K auskommen. Das Ergebnis ist fast ident mit der bereits beschriebenen Abfrage „^C[A-GIJL-Ü]..$“, es werden hier anstatt 54 aber nur 52 Treffer ausgegeben:
CAKE und CASH fehlen hier – diese Wörter enthalten ein K bzw. H an der dritten bzw. vierten Stelle!
"^C[^HK][^HK][^HK]?$" matcht zum Beispiel alle drei-und vierbuchstabigen Wörter, die mit C anfangen und ohne H und K auskommen. Es werden 64 Treffer erzielt, folgende 12 Wörter kommen zum vorherigen Abfrageergenis hinzu:
CAB CAP CAR CER CES CIS COB COP COX CRU CUP CUT
Der feine Unterschied zur vorherigen Abfrage „^C[^HK][^HK][^HK]$“ ist das ? nach der letzten Zeichengruppe [^HK].
Wir erinnern uns: Das Fragezeichen als Quantor findet entweder kein oder genau ein Vorkommen des vorangehenden Zeichens oder Zeichengruppe.
Wenn es [^HK] nicht findet bzw. auslässt, bedeutet dies nichts anderes, dass dann die Suchergebnisse nur dreibuchstabige Wörter sind. Mit Hilfe des MiniMax-Befehls können wir den Suchstring sogar etwas kürzer fassen:
"^C[^HK]{1,3}$"
Übersetzt heißt das:
^C Wir suchen ein Wort, das mit C anfängt.
^C[^HK] Nach dem C darf ein beliebiges Zeichen - hier Buchstabe – folgen, dass jedoch weder ein H noch ein K sein darf.
^C[^HK]{1,3} Der beliebige Buchstabe muss minimal ein- bis maximal dreimal vorkommen, aber immer gilt, dass es weder ein H noch ein K sein darf.
^C[^HK]{1,3}$ Das Dollarzeichen stellt sicher, dass spätestens nach dreimaligen Vorkommen das Wortende erreicht sein muss – zusammen mit dem C kann das Wort daher nicht länger als vier Buchstaben lang sein.
Hier die im Rahmen des Turtorials letzten Hausaufgaben:
1. Warum matcht der Suchstring „^C[^HK]{2,3}$“ genauso viel Treffer wie der Suchstring „^C[^HK]{1,3}$“ 2. Wie finde ich alle maximal vierbuchstabigen Wörter ohne H und K, die mit einem C aufhören?
In der letzten Lektion 8 lernen wir die Oder-Verknüpfung kennen.
Gero
Download: Geros Superdic, was sonst! | Discussion: Forum | News: Twitter | ... und im übrigen bin ich der Meinung, dass Wordfinder beim online-Spiel pfui sind!
Wir hoffen, dass dir unser Forum gefällt und du dich hier genauso wohlfühlst wie wir.
Um dir und den anderen Mitgliedern das Bestmögliche bieten zu können, würden wir das Forum gern werbefrei gestalten und mit tollen neuen Extras ergänzen.
Wenn du uns dabei unterstützen möchtest, kannst du mit Hilfe einer kleinen Spende dazu beitragen,
diese Änderungen zu finanzieren.