Laden...

Straße und Hausnummer trennen?

Erstellt von math55 vor 15 Jahren Letzter Beitrag vor 3 Jahren 12.980 Views
math55 Themenstarter:in
314 Beiträge seit 2007
vor 15 Jahren
Straße und Hausnummer trennen?

Hallo,

ich möchte die Straße und die Hausnummer trennen. Grundlegend habe ichs auch, aber recht umständlich. Ich schaue zuerst, ob ein Punkt drin ist, wenn ja, splitte ich am Punkt. Das ist einfach. Dann kommt der Teil mit Leerzeichen. Hier habe ich Probleme.

Ich schaue zuerst nach dem letzten Leerzeichen uns splitte dann dort. Das Klappt aber nicht für Muster Gasse 1 a, da dann die Hausnummer das "a" wäre. Wie könnte ich vorgehen?

Danke 🙂

16 Beiträge seit 2008
vor 15 Jahren

Such mal nach Regex (regular expression), dass könnte dir helfen.

math55 Themenstarter:in
314 Beiträge seit 2007
vor 15 Jahren

Dachte ich auch dran, aber wie genau?

Danke

925 Beiträge seit 2004
vor 15 Jahren

Ich geh mal davon aus, daß zwischen Straße und Hausnummer mindestens eine Leerstelle liegt...


(?<strasse>.*?)\s+(?<hausnr>\d+\s*.*)

... und ich geh mal davon aus, daß du die Verwendung regulärer Ausdrücke in C# nicht kennst:


            Match tMatch = Regex.Match(t_AdresseStrHNr, @"(?<strasse>.*?)\s+(?<hausnr>\d+\s*.*)");

            if(tMatch != null)
            {
                        string t_Strasse = tMatch.Groups["strasse"].Value;
                        string t_HausNr = tMatch.Groups["hausnr"].Value;
            }

t_AdresseStrHNr musst du natürlich vorher entsprechend füllen. Sehr beispielhafter Code.

Eigentlich ist es unsauber, t_Strasse und t_HausNr in dem if-Block anzulegen... man kann natürlich auch, wenn tMatch == null ist, irgendwie aus der Funktion aussteigen... naja, soll ja auch nur das Prinzip verdeutlichen...

3.825 Beiträge seit 2006
vor 15 Jahren

Folgende Adresse gibt es :

Hauptstraße 17
Hauptstraße 17a
Hauptstraße 17 b
Hauptstraße 17 B1
Hauptstr.17
Hauptstraße 10 App. 123
Hauptstraße 17 1.Stock
Hauptstraße 17 2. Stock
An der Schleuse 18

Viel Spass beim Herausfinden was nun die Hausnummer ist.

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

math55 Themenstarter:in
314 Beiträge seit 2007
vor 15 Jahren

Funktioniert bestens! Danke 🙂

925 Beiträge seit 2004
vor 15 Jahren

Also meine Variante funktioniert mit

Hauptstraße 17
Hauptstraße 17a
Hauptstraße 17 b
Hauptstraße 17 B1
An der Schleuse 18

soweit einwandfrei... man könnte das Muster sicherlich entsprechend der anderen Varianten anpassen.

3.825 Beiträge seit 2006
vor 15 Jahren

Hallo Seven e.Q.,

Klasse !

Werde ich auch gleich mal testen.

Danke 😁

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

328 Beiträge seit 2006
vor 15 Jahren

Viel Spass beim Herausfinden was nun die Hausnummer ist. [...]

Da habe ich noch ein paar nette:

Sallweg 1-3a Haus 1 R8
An die 2. Scharte
M3

😉

Robert Wachtel

http://blog.robertsoft.de

925 Beiträge seit 2004
vor 15 Jahren

(?<strasse>.*?)[\s+\.](?<hausnr>\d+\s*.*)

funktioniert nun auch mit

Hauptstr. 17
Hauptstr.17
Hauptstr. 17 b
Hauptstr. 17b
Hauptstr.17 b
Hauptstr.17b
Haupt Str. 17
Haupt Str.17
Haupt Str. 17b
und so weiter...

Wobei der Punkt dann nicht mehr zum Straßennamen gehört.


(?<strasse>.*?\.*)\s*(?<hausnr>\d+\s*.*)

damit gehört der Punkt dann auch zum Straßennamen.

3.825 Beiträge seit 2006
vor 15 Jahren

Das grenzt ja schon an AI (Künstliche Intelligenz).

😉

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

925 Beiträge seit 2004
vor 15 Jahren

Das grenzt ja schon an AI (Künstliche Intelligenz).

😉

Grüße Bernd

Nicht wahr?! 😉 😁

J
3.331 Beiträge seit 2006
vor 15 Jahren

Noch ein paar Vorschläge zur Erweiterung der KI:

Straße 523 Nr. 18 oder
Str. 523 Haus 18
Straße F 4 oder
Straße F Nr. 4
Str. d. 17. Juni 135
M3 (von Robert Wachtel) mit Hausnummer als:
M3, 18 oder
M3 Nr. 18 oder
M 3 Haus 18
Weg 0 Nr. 18 (gibt es wirklich mit Null)
Weg B Nr. 18

Gruß Jürgen

K
3 Beiträge seit 2020
vor 3 Jahren

Ich habe es selbst versucht umzudrehen für Ausländische Adressen aber es will nicht ganz passen....

Ich setze bei mir vorraus das die Hausnummer immer kürzer ist als die Strasse und wenn das nicht so ist würde ich das regex gerne umdrehen, komme aber nicht ganz zum erfolg.

(?<hausnr>\d+\.*)\s*(?<strasse>.*?\.*.*)

zb Frankreich, USA usw haben die Hausnummer oft vorne...
Wer kann helfen?
LG Kruegge

925 Beiträge seit 2004
vor 3 Jahren

Uaaah, Zombiethreadapokalypse! 😄

Ich bin mir nicht sicher, ob's eine on-fits-all Lösung dafür gibt. Aber wahrscheinlich irgendwas mit look-ahead. Ich bin auch schon eine Weile raus aus diesem Thema. So... ca... 12 Jahre.

K
3 Beiträge seit 2020
vor 3 Jahren

muss nicht all in one sein, mir für die ober lösung schon reichen, wenn es sauebr funktioniert ds die Hausnummer zuerst steht...

16.806 Beiträge seit 2008
vor 3 Jahren

Ich kann keine Frage in Deinen Beiträgen erkennen. Sollen wir Dir den Regex anpassen, oder wie?

Wenn ich Google-Suche nach regex us address zeigt Google sofort folgenden Vorschlag vor:

^\d{1,6}\040([A-Z]{1}[a-z]{1,}\040[A-Z]{1}[a-z]{1,})$|^\d{1,6}\040([A-Z]{1}[a-z]{1,}\040[A-Z]{1}[a-z]{1,}\040[A-Z]{1}[a-z]{1,})$|^\d{1,6}\040([A-Z]{1}[a-z]{1,}\040[A-Z]{1}[a-z]{1,}\040[A-Z]{1}[a-z]{1,}\040[A-Z]{1}[a-z]{1,})$

Alternativ regexlib - Street

K
3 Beiträge seit 2020
vor 3 Jahren

ja ds wäre sehr hilfreich wenn du mir helfen könntest deinen regex umzudrehen, einfach nur das die kombinationen funktuonieren, wenn die Hausnummer vorne steht., weil das auf viele Länder zutrifft und bei meinem versuch klappt das nicht 100%ig.

T
2.219 Beiträge seit 2008
vor 3 Jahren

Der RegEx sucht bereits am Anfang nach der Hausnummer, daher auch der hinweis auf die US Suche von Abt.

Wenn du einen spezifischen RegEx suchst, dann such bei Google selbst.
Für eine saubere Umsetzung müsstest du auch pro Land den richtigen RegEx nutzen, da einfach nach Hausnummer vorne oder hinten, kein sinnvoller Ansatz ist um die Adressen richtig zu parsen.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.