Ich versuche, einen Weg zu finden, um festzustellen, ob eine Zeichenfolge mindestens n Anzahl von Zeichen in einer bestimmten Reihenfolge enthält.Regex mit fehlenden Zeichen
Ich verarbeite eine enorme Menge an Daten von Hand geschrieben und die Menge der Tippfehler ist ziemlich verrückt.
Ich muss Textteile in einer großen Zeichenfolge suchen so etwas wie finden:
irrelevant Text MONKEY, CHIMP: mehr irrelevant Text
I MONKEY, CHIMP finden müssen:
Die Art, wie dies falsch geschrieben ist, ist ziemlich verrückt. Hier ist ein extra seltsam Beispiel:
affe, schimpanse:
ich zu einem Punkt in meinem Regex habe, wo ich bin in der Lage alle diese Vorkommen zu finden. Wahrscheinlich nicht die schönste Lösung, aber hier ist es:
(m|M)(o|O)(n|N)(k|K)(e|E)(y|Y),?\s+(c|C)(h|H)(i|I)(m|M)(p|P)(\s+)?:
Sieht ein bisschen komisch aus, aber es funktioniert.
Leider hört die Verrücktheit hier nicht auf. Ich muss diese Regex so ändern, dass es auch 1 fehlenden Buchstaben in jedem Wort erlaubt.
So würde ich brauche diese regex zu ändern, so dass es auch für so etwas wie funktionieren würde:
MONKEY, CIMP:
OnKey, Chimp:
OnKey, CIMP:
Ich würde denken, dass es eine Möglichkeit geben sollte, der Regex zu sagen, dass es Wordlength-1 genaue Anzahl von Zeichen benötigt, um zu entsprechen.
Gibt es eine einfache Möglichkeit, dies zu tun?
Ich habe in {4,} untersucht, aber ich bin mir nicht sicher, ob das die richtige Richtung ist oder ob es hier angewendet werden könnte.
Vielen Dank im Voraus, Peter
setzen Sie können die Regex viel einfacher, wenn Sie den Text normalisieren, indem Sie es in Kleinbuchstaben zum Beispiel. – Markus
Oder indem Sie eine Groß-/Kleinschreibung nicht beachten. Siehe https://stackoverflow.com/questions/3436118/is-java-regex-case-insensitive – GhostCat
Regex allein reicht möglicherweise nicht für eine skalierbare Lösung. Sie könnten am Ende Ihren eigenen Parser benötigen, der Ähnlichkeiten mit einem Wörterbuchwort auswertet, z. mit einer Levenshtein Abstandsmetrik. – Mena