Regex-Straßenadressenübereinstimmung

Lesezeit: 4 Minuten

Regex Strasenadressenubereinstimmung
isuelt

Obwohl ich weiß, dass der Abgleich einer Straßenadresse niemals perfekt sein wird, versuche ich, ein paar Regex-Anweisungen zu erstellen, die die meiste Zeit nahe kommen.

Ich versuche, eine Adresse hervorzuheben. Ich sauge an Regex und ich habe versucht, nah dran zu sein, aber könnte mir jemand helfen zu verstehen, wie ich das besser machen kann?

Zeichenfolge:

6:00 – 23:00 Uhr, Palma Sola Elementary, 6806 Fifth Ave NW, Bradenton, FL 34209 Kommen Sie und finden Sie gleich in der Nähe des dsfsd sa fsa fasdf asfsds 5001 West Ihre Mutter lebt nicht hier, mein Ford Ranger von 2005,

Regex 1:

/\s+(\d{2,5}\s+)(?![a|p]m\b)(([a-zA-Z|\s+]{1,5}){1,2})?([\s|\,|.]+)?(([a-zA-Z|\s+]{1,30}){1,4})(court|ct|street|st|drive|dr|lane|ln|road|rd|blvd)([\s|\,|.|\;]+)?(([a-zA-Z|\s+]{1,30}){1,2})([\s|\,|.]+)?\b(AK|AL|AR|AZ|CA|CO|CT|DC|DE|FL|GA|GU|HI|IA|ID|IL|IN|KS|KY|LA|MA|MD| ME|MI|MN|MO|MS|MT|NC|ND|NE|NH|NJ|NM|NV|NY|OH|OK|OR|PA|RI|SC|SD|TN|TX|UT|VA| VI|VT|WA|WI|WV|WY)([\s|\,|.]+)?(\s+\d{5})?([\s|\,|.]+)/ich

(Manchmal gibt es nur eine Straße und einen Ort, aber kein Bundesland oder eine Postleitzahl)

Regex 2:

/\b(\d{2,5}\s+)(?![a|p]m\b)(NW|NE|SW|SE|Nord|Süd|West|Ost|n|O|S|W)?([\s|\,|.]+)?(([a-zA-Z|\s+]{1,30}){1,4})(court|ct|street|st|drive|dr|lane|ln|road|rd|blvd)/i

Daran rumfummeln: http://jsfiddle.net/isuelt/rMC6P/11/

  • Sie geben Ihr Endziel nicht an, daher können wir nicht wissen, was Sie wollen oder wie wir helfen können. “Um das besser zu machen” ist ziemlich vage 🙂

    – Willem Mulder

    22. Februar 2012 um 15:17 Uhr

  • Meine Augen. MEINE AUGEN.

    – Geekchic

    22. Februar 2012 um 15:31 Uhr

  • Willkommen bei Stack Overflow, @isuelt – es ist schon eine Weile her, also vergessen Sie nicht, die hilfreichste Antwort zu akzeptieren, indem Sie auf das Häkchen klicken.

    – Matt

    13. Juni 2013 um 23:24 Uhr

  • ich fand das hier auch nützlich: codeproject.com/Tipps/989012/…

    – David

    26. November 2017 um 3:28 Uhr

Regex Strasenadressenubereinstimmung
Matt

US-Adressen sind keine reguläre Sprache und können nicht mit regulären Ausdrücken abgeglichen werden. Sie sind in Einzelfällen hilfreich, aber im Allgemeinen werden sie Sie im Stich lassen, insbesondere bei solchen Eingaben.

Ich habe früher bei einer Adressverifizierungsfirma gearbeitet. Als Antwort auf Ihre Frage, um eine Adresse in einer Textfolge hervorzuheben, empfehle ich Ihnen, ein Extraktionsdienstprogramm auszuprobieren. Es gibt ein paar da draußen und ich schlage vor, Sie schauen sich um, aber hier ist es unsere unter Verwendung der Eingabe aus Ihrer Frage — wie Sie sehen können, hat es die Adresse gefunden und validiert:

Beispiel für die LiveAddress-Extraktion

Der API-Endpunkt gibt JSON zurück, das die Start- und Endpositionen jeder Adresse sowie zahlreiche Informationen zu jeder Adresse enthält. (Siehe die CSV-Ausgabe unten im Bild oben.)

Ich lobe Sie dafür, dass Sie diesen regulären Ausdrücken trotzen, die Sie ausprobiert haben! Hoffentlich ist dies hilfreich.

  • Eine zusätzliche Verifizierungsidee wäre, die Geokodierungs-API von Google zu verwenden, um herauszufinden, ob sie Daten für diese Adresse haben.

    – Der Tedinator

    31. Dezember 2012 um 5:47 Uhr

  • Ist das eine Antwort oder Werbung für SmartyStreets?

    – Nik

    29. Mai 2013 um 4:38 Uhr

  • @Nick Es ist eine Antwort. Wenn es eine Anzeige wäre, hätte ich nicht angegeben, dass ich dort arbeite. Ich hätte auch nicht vorgeschlagen, dass er sich nach anderen Optionen umsieht. So sieht eine Anzeige aus: stackoverflow.com/a/7463590/1048862

    – Matt

    29. Mai 2013 um 13:45 Uhr

1647149112 858 Regex Strasenadressenubereinstimmung
Scottmas

Matt hat Recht. Regex-Parsing wird nie sehr genau sein. Wenn Sie diesen gefährlichen Weg einschlagen, werden Sie unweigerlich eine angemessene Anzahl falsch positiver und falsch negativer Ergebnisse erhalten. Wenn Sie damit einverstanden sind, verwende ich jedoch gerne eine Kombination aus zwei regulären Ausdrücken – eine für auf Straßennamen basierende Schemata und eine für Stadtrasterschemata:

Straßennamensystem:

/\b\d{1,6} +.{2,25}\b(avenue|ave|court|ct|street|st|drive|dr|lane|ln|road|rd|blvd|plaza|parkway|pkwy)[.,]?(.{0,25} +\b\d{5}\b)?/ig

Grid-System

/(\b( +)?\d{1,6} +(north|east|south|west|n|e|s|w)[,.]?){2}(.{0,25} +\b\d{5}\b)?\b/ig

Beachten Sie auch, dass Sie, wenn die Adresse kein Bundesland und keine Postleitzahl hat, das Extrahieren von Text, der nach dem Straßennamen steht, im Grunde vergessen können.

1647149113 469 Regex Strasenadressenubereinstimmung
Nimatra

Ich musste etwas Ähnliches für Adressen wie tun

800 SE 20 AVENUE #603, DEERFIELD BEACH

9801 NW 3 STREET APT 5, PLANTAGE

11909 GLENMORE DRIVE #4-1, CORAL SPRINGS

Dies ist die Regex, die ich verwendet habe

\s*([0-9]*)\s((NW|SW|SE|NE|S|N|E|W))?(.*)((NW|SW|SE|NE|S|N|E|W))?((#|APT|BSMT|BLDG|DEPT|FL|FRNT|HNGR|KEY|LBBY|LOT|LOWR|OFC|PH|PIER|REAR|RM|SIDE|SLIP|SPC|STOP|STE|TRLR|UNIT|UPPR|\,)[^,]*)(\,)([\s\w]*)\n

Es gibt separate Gruppen für jeden Teil der Adresse zurück (ich musste den Zustandsnamen für meinen Fall nicht analysieren). Probieren Sie es hier aus
https://regex101.com/r/OsvOxn/3

Das funktioniert für mich!

if(address.match(/^\s*\S+(?:\s+\S+){2}/)) {
   console.log('good address!')
}

996100cookie-checkRegex-Straßenadressenübereinstimmung

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy