Ich versuche nach dem Wort Gadaffi zu suchen. Was ist der beste reguläre Ausdruck, um danach zu suchen?
Mein bisher bester Versuch ist:
\b[KG]h?add?af?fi$\b
Aber ich vermisse immer noch einige Zeitschriften. Irgendwelche Vorschläge?
Update: Ich habe hier eine ziemlich umfangreiche Liste gefunden: http://blogs.abcnews.com/theworldnewser/2009/09/how-many-different-ways-can-you-spell-gaddafi.html
Die Antwort unten entspricht allen 30 Varianten:
Gadaffi Gadafi Gadafy Gaddafi Gaddafy Gaddafi Gaddafi Gathafi Ghadaffi Ghadafi Ghaddafi Ghaddafy Gheddafi Kadaffi Kadafi Kaddafi Kadhafi Kazzafi Khadaffy Khadafy Khaddafi Gaddafi Gaddafi Gaddafi Gaddafi Qadthafi Qathafi Quathafi Qudhafi Kad'afi
.+
der einzig gültige reguläre Ausdruck.Antworten:
\b[KGQ]h?add?h?af?fi\b
Die arabische Transkription ist (Wiki sagt) "Qaḏḏāfī", also vielleicht ein Q. und ein H ("Gaddafi", wie im Artikel (siehe unten) erwähnt).
Übrigens, warum steht
$
am Ende des regulären Ausdrucks ein?Übrigens, schöner Artikel zum Thema:
Gaddafi, Kadafi oder Gaddafi? Warum wird der Name des libyschen Führers so unterschiedlich geschrieben? .
BEARBEITEN
Damit alle Namen in dem Artikel, den Sie später erwähnt haben , übereinstimmen, sollte dies mit allen übereinstimmen. Hoffen wir nur, dass es nicht zu vielen anderen Dingen passt: D.
quelle
d
auch ein ḏ?Qaḏḏāfī
, sollte der Regex auch prüfenQaddafi
. Wenn Sie auch nach der arabischen Transkription suchen möchten, suchen Sie einfach nach dieser - ich glaube nicht, dass es mehr Varianten der arabischen Transkription gibt, nur der englischen Transkriptionen.?
anstelle von Buchstaben). Könnte aber ein Overkill sein.Einfach ...
(Qadaffi|Khadafy|Qadafi|
...)
... es ist selbstdokumentiert, wartbar und unter der Annahme, dass Ihre Regexp-Engine tatsächlich reguläre Ausdrücke kompiliert (anstatt sie zu interpretieren), wird sie mit demselben DFA kompiliert wie eine verschleiertere Lösung.Das Schreiben kompakter regulärer Ausdrücke entspricht der Verwendung kurzer Variablennamen, um ein Programm zu beschleunigen. Es hilft nur, wenn Ihr Compiler hirntot ist.
quelle
Eine interessante Sache aus Ihrer Liste möglicher Schreibweisen ist, dass es nur 3 Soundex-Werte für die enthaltene Liste gibt (wenn Sie den Ausreißer 'Kazzafi' ignorieren).
G310, K310, Q310
Jetzt gibt es dort falsch positive Ergebnisse ('Godby' ist auch G310), aber wenn Sie auch die begrenzten Metaphontreffer kombinieren, können Sie sie eliminieren.
Ein paar Änderungen und beispielsweise eine kyrillische Transliteration, und Sie haben eine ziemlich robuste Lösung.
quelle
Verwenden des CPAN-Moduls Regexp :: Assemble :
Dies erzeugt den folgenden regulären Ausdruck:
quelle
Ich denke, Sie sind damit fertig, die Dinge hier zu komplizieren. Der richtige reguläre Ausdruck ist so einfach wie:
Es entspricht der Verkettung der sieben arabischen Unicode-Codepunkte, die das Wort القذافي (dh Gadaffi) bilden.
quelle
Wenn Sie vermeiden möchten, dass Dinge übereinstimmen, die niemand verwendet hat (dh nicht zu ". +" Tendieren), besteht Ihr bester Ansatz darin, einen regulären Ausdruck zu erstellen, der nur alle Alternativen enthält (z. B. (Qadafi | Kadafi | ...)). ) kompilieren Sie das dann zu einem DFA und konvertieren Sie den DFA zurück in einen regulären Ausdruck. Angenommen, eine mäßig sinnvolle Implementierung würde Ihnen einen "komprimierten" regulären Ausdruck geben, der garantiert keine unerwarteten Varianten enthält.
quelle
Wenn Sie eine konkrete Auflistung aller 30 Möglichkeiten haben, verketten Sie sie einfach alle mit einer Reihe von "Ors". Dann können Sie sicher sein , dass es nur genau den Dingen entspricht, die Sie aufgelistet haben, und nicht mehr. Ihre RE-Engine wird wahrscheinlich in der Lage sein, weiter zu optimieren, und mit 30 Auswahlmöglichkeiten, auch wenn dies nicht der Fall ist, ist es immer noch keine große Sache. Der Versuch, mit der manuellen Umwandlung in eine "clevere" RE herumzuspielen, kann unmöglich besser und möglicherweise schlechter ausfallen.
quelle
Mit Sicherheit nicht die am besten optimierte Version. Teilen Sie die Silben auf, um die Übereinstimmungen zu maximieren, und stellen Sie gleichzeitig sicher, dass wir keine Fehlalarme erhalten.
quelle
Nun, da Sie kleine Wörter finden, warum versuchen Sie es nicht mit einer Ähnlichkeitssuchmaschine mit der Levenshtein- Entfernung? Sie können höchstens k Einfügungen oder Löschungen zulassen . Auf diese Weise können Sie die Distanzfunktion auf andere Dinge ändern, die für Ihr spezifisches Problem besser funktionieren. In der simMetrics-Bibliothek stehen viele Funktionen zur Verfügung.
quelle
Eine mögliche Alternative ist das Online-Tool zum Generieren regulärer Ausdrücke aus Beispielen http://regex.inginf.units.it . Gib es eine Chance!
quelle
Warum nicht einen gemischten Ansatz? Etwas zwischen einer Liste aller Möglichkeiten und einem komplizierten Regex, der viel zu sehr übereinstimmt.
Bei Regex geht es um Mustervergleich, und ich kann nicht für alle Varianten in der Liste ein Muster sehen. Wenn Sie dies versuchen, werden Sie auch Dinge wie "Gazzafy" oder "Quud'haffi" finden, die höchstwahrscheinlich keine gebrauchte Variante sind und definitiv nicht auf der Liste stehen.
Aber ich kann Muster für einige der Varianten sehen, und so kam ich zu folgendem Ergebnis:
Zu Beginn liste ich diejenigen auf, bei denen ich kein Muster sehen kann, gefolgt von einigen Varianten, bei denen es Muster gibt.
Sehen Sie es hier auf www.rubular.com
quelle
\b
sind nur in der ersten und der letzten Alternative enthalten.Ich weiß, das ist eine alte Frage, aber ...
Keiner dieser beiden regulären Ausdrücke ist der schönste, aber sie sind optimiert und beide passen zu ALL Variationen im ursprünglichen Beitrag .
"Little Beauty" # 1
"Little Beauty" # 2
Ruhe in Frieden, Muammar.
quelle
Nur ein Nachtrag: Sie sollten "Gheddafi" als alternative Schreibweise hinzufügen. So sollte der RE sein
quelle
In Teilen:
Hinweis: Ich wollte nur einen Versuch machen.
quelle
Was beginnt sonst noch mit Q, G oder K, hat ad, z oder t in der Mitte und endet mit "fi", nach dem die Leute tatsächlich suchen?
Erledigt.
Interessant, dass ich herabgestimmt werde. Kann jemand in den Kommentaren einige Fehlalarme hinterlassen?
quelle
kartografi kryptografi Gaddafi Qaddafi gadafi gaddafi katastloofi katastorfi katastrofi khadaffi kadafi kardiyografi gaskromatografi kardiografi kinematografi kromatografi krystallografi kulturgeografi gandolfi grizzaffi gadhafi kadaffi kaddafi khaddafi qaddafi qadhafi quedaffi gordonsCHsKFI
. Einige davon sind jedoch keine Fehlalarme .[iy]
anstatt nuri
:gelatinify gentrify ghostlify giddify gladify goutify gratify "Gyula Dessewffy" katasrofy katastrofy khadafy quantify quasi-deify quizzify