Ich muss ein Regex-Problem zu lösen, die zu bestimmten, durch Stack-Überlauf haben könnte Ich habe ein paar gute Entdeckungen gemacht, aber nicht in der Lage gewesen, sie zusammenzufügen, damit es funktioniert.Fixing Straßennamen mit Regex
Grundsätzlich mag ich dies:
lorem ipsum north road
=>lorem ipsum rd (n)
north lorem ipsum rd
=>lorem ipsum rd (n)
lorem ipsum road north
=>lorem ipsum rd (n)
Im Rahmen eines Auto kompletten Programms ich brauche Teil Text zu umwandeln auf die richtige Version, so dass es die Datenbank
überprüfen kannlorem ipsum so
uth rd =>lorem ipsum rd (s)
west lorem ipsum roa
d =>lorem ipsum rd (w)
Ich will nicht jemand für mich, dieses Programm kodieren, aber ich möchte die am besten wissen, Art und Weise, das Problem anzugehen.
Nun könnte man mich fragen, warum ich die Mühe, da die Menschen nicht mit einer solchen f'd up Grammatik schreiben würde, aber das ist, weil ich nicht nur mit Englisch zu tun bin :(
Prost
Dies ist eine große Herausforderung. Ich habe vorher eine RegExp erstellt, die Straßentypen gefunden hat (zB "Street", "Lane", "Avenue", "Ave", etc.), aber selbst das war eine RegExp von über 200 Zeichen. Das zu lösen wäre komplexer. Randfälle wie "North Rd", "West Ave", etc. würden es noch schwieriger machen. –
Ich denke, das ist die Art von Frage, die nicht mit einem einzigen großen Regex gelöst werden sollte. Es wäre einfacher, die Aufgabe in kleine Schritte aufzuteilen und diese getrennt durchzuführen: z.B. Suche nach Norden, N ... usw. und füge ein "(n)" zum Ende hinzu; Überprüfen Sie die anderen Richtungen; Auf Abkürzungen von "Straße" prüfen ... usw. Wenn Sie jedes in einem anderen Schritt tun, wird es wahrscheinlich einfacher zu folgen und einfacher zu schreiben. –
Ooh, ein anderer Gedanke: Wenn du es Schritt für Schritt machst, hast du die Möglichkeit, deine Modifikation rückgängig zu machen und den Lookup erneut zu versuchen: Es ist möglich, dass irgendeine Straße etwas in dem tatsächlichen Namen hat, den du ersetzt hast. –