Ich habe viel Arbeit an dieser Art von Parsing geleistet. Da es Fehler gibt, erhalten Sie keine 100%ige Genauigkeit, aber es gibt ein paar Dinge, die Sie tun können, um den größten Teil des Weges dorthin zu bringen, und dann einen visuellen BS-Test durchführen. Hier ist die allgemeine Vorgehensweise. Es ist kein Code, weil es ziemlich akademisch ist, es zu schreiben, es gibt keine Verrücktheit, nur eine Menge String-Handhabung.
(Da Sie nun einige Beispieldaten gepostet haben, habe ich einige kleinere Änderungen vorgenommen)
- Arbeiten Sie rückwärts. Beginnen Sie mit der Postleitzahl, die sich am Ende befindet, und in einem von zwei bekannten Formaten:XXXXX oder XXXXX-XXXX. Wenn dies nicht angezeigt wird, können Sie davon ausgehen, dass Sie sich im Bereich Stadt, Staat unten befinden.
- Das nächste Ding vor der ZIP-Datei wird der Staat sein, und zwar entweder im Zwei-Buchstaben-Format oder als Wörter. Sie wissen auch, welche das sein werden – es gibt nur 50 davon. Außerdem könnten Sie die Wörter klingen lassen, um Rechtschreibfehler zu kompensieren.
- davor ist die Stadt, und es ist wahrscheinlich auf der gleichen Linie wie der Staat. Sie könnten eine Postleitzahlen-Datenbank verwenden um die Stadt und das Bundesland anhand der Postleitzahl zu überprüfen oder es zumindest als BS-Detektor zu verwenden.
- Die Straßenadresse besteht im Allgemeinen aus einer oder zwei Zeilen. Die zweite Zeile ist im Allgemeinen die Zimmernummer, falls vorhanden, aber es könnte auch ein Postfach sein.
- Es wird nahezu unmöglich sein, einen Namen in der ersten oder zweiten Zeile zu erkennen, aber wenn ihm keine Nummer vorangestellt ist (oder wenn ihm ein "attn:" oder "attention to:" vorangestellt ist, könnte es Ihnen passieren ein Hinweis darauf, ob es sich um eine Namens- oder eine Adresszeile handelt.
Ich hoffe, das hilft etwas.