Separate Straßennamen von der Hausnummer
Ich versuche zu trennen, Straßennamen von der Straße die Nummern, die diese Muster:
- "street 12" - - - - name:Straße , Hausnummer:12
- "street12" - - - - name:Straße , Hausnummer:12
- "street 12a" - - - - name:Straße , Hausnummer:12a
- "street12a" - - - - name:Straße , Hausnummer:12a
Was ist die regex um den Namen der Straße, und die regex, um die Nummer der Strasse, in php und python?
Hinweis: Die Zahl wird immer nach den Namen der Straße, so dass ich denke, dass sollte zu verkürzen.
Dank.
- Kann Folgendes passieren:
Strasse des 17. Juni 153
? (Eine gültige Adresse in Berlin, Deutschland) - In diesem Fall sollte er es modular, so kann er einen anderen regulären Ausdruck für jedes Land, wenn er wollte. Der schwierige Teil ist, wo Sie Straßen, dass sind zahlen, wie "32nd ST".
- ... oder 12, Avenue du 10ème de Ligne ... starke Vereinfachung wird der Postbote unglücklich.
- Ich Frage mich, wie Suchmaschinen wie google, bing und yahoo machen?
- Ihre Beispiele und schriftliche Erklärung, die sollten wirklich ein wenig mehr Informationen darüber, was muss angepasst werden - in der Regel, wenn der Ausdruck
/^(?P<name>[a-zA-Z]+)\s*(?P<number>[a-zA-Z0-9]+)$/
wird, erfassen Sie den Namen und die Nummer in die genannten Gruppen für die Beispiele, die Sie zur Verfügung gestellt. Wenn der name der Straße hat, mehr als ein Wort, es wird ein wenig komplexer, aber immer noch LEICHT machbar - Motoren" in der Regel nicht die Mühe, Parsen von Adressen. Nun, wenn Sie unter Bezugnahme auf anzeigen-Websites, auf der anderen Seite (z.B. Google Maps, etc)... viele fein abgestimmte geocoding-code.
- Es gibt ein "East Road" hier in der Stadt als gut. Regexes werden NIE in der Lage, alle street Benennung Fällen richtig - Sie sind einfach zu randomish.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, diese, wie sehen, ob es für Sie arbeitet:
Der einzige Teil, den Sie brauchen, ist diese:
Ich würde vorschlagen, dass der beste Weg, um zu bestimmen, Wann beginnt die Nummer ist, wenn Sie drücken Sie eine Ziffer. So verwenden Sie
Beispiele:
Wird es wohl am besten sein, für Sie zu denken, wie Sie wollen-edge Fälle behandelt werden, dann schreibt man einen unit-test zu testen, Ihre eigenen Regex-Funktion.
Generell sind die Adressen nicht immer sauber. Vor allem, wenn diese Daten kommen direkt von den Benutzern, die Sie haben zu berücksichtigen, dass nicht jeder hat solch ein standard-Adresse. Es gibt Postfächer, ländliche Routen
31 1/2
s, Suiten, Tonnen von Variationen, die auf street-Typen (Straße, Straße, Kreis, Gericht, etc, etc, plus alle Ihre Abkürzungen). Leerzeichen im Straßennamen, hypens im Haus zahlen, die Komplexität der Adressen ist sehr einfach zu unterschätzen. Mischen Sie in das Potenzial für nicht-US-Adressen und die Komplexität steigt exponentiell.Dieser Riese Funktion versucht, einen Sinn zu geben, dass (zumindest so weit wie die US-Post ist besorgt): http://codepad.org/pkTdUDL6 ich hatte diese Funktion herumliegen, so müssen Sie es ggf. optimieren oder Ausarbeitung. Wenn nichts anderes, es sollte Ihnen eine Vorstellung von der Aufgabe eines mit konfrontiert ist, wenn Sie versuchen, um Benutzer Adressdaten sane.
Dies macht es auch verlockend, teilen Sie die Hausnummer, Straße und street Art in separate Felder. Wenn die Genauigkeit der Analyse-Adressen ist entscheidend für Ihr system-design, möchten Sie vielleicht zu prüfen; real estate-Systeme zum Beispiel müssten für diese Ebene der Granularität für diese Daten. Wenn Ihr Anwendungsfall nicht kritisch verlassen sich auf die Fähigkeit, genau zu analysieren diese Daten, dann würde ich nicht vorschlagen, präsentieren ein Benutzer mit all diesen extra-Feldern. Nehmen Sie einfach Ihre Adresse ein, wie Sie es geben, versuchen, es zu bereinigen und erwarten einige Ungereimtheiten in dem rest deines system ' s design.
Vorausgesetzt, es kann nur einen letzten Brief,
Parsing-street-Adressen kann man böse, wirklich schnell. Die zuverlässige, sorgenfreie Weg ist, einen Dienst zu verwenden, können Sie beheben die Adresse von Komponenten basierend auf der vollständigen delivery point barcode (9-stellige PLZ + 3 stelliger übergabestelle).
Ich arbeite für eine Prüfung der Adresse der Firma, SmartyStreets und wir haben eine API, die Parsen können diese Komponenten für Sie. Sehen Sie diese Beispiel. Nur einen einfachen GET-request, und Sie haben ein JSON-Ergebnis mit allen die Adresse, die Komponenten analysiert für Sie.
Update: SmartyStreets bietet jetzt internationale Adressprüfung.
Mag zwar alt sein, aber bezogen der Kommentar von Pekka würde ich folgenden regex in b01 code:
so vollständige code wäre
Dieser wählt die Letzte auftretende Zahl, einschließlich der folgenden chars (z.B. 15F/15 F), während immer noch die Erkennung von Straßen einschließlich zahlen (wie 5th Ave 123, Straße des 17. Juni 123)
Für street-Adressen in Deutschland ist die am besten funktionierende Lösung ist https://gist.github.com/benvds/350404 (wie @ZFNerd erwähnt). Nur ein wenig hack zu erkennen "ß" - Zeichen als gut.
Statt
sollten Sie verwenden
Diese Lösung funktioniert für Straßen wie
perfekt!
#45, Villiams Straße,
Colombo-6. 10000.