Wie mit RegEx Hausnummer auslesen?

5 Antworten

Indem Du Zahlen und alles darauf Folgende mit nimmst.

\d+.*

Allerdings fällt das zusammen, wenn im Straßennamen auch eine Zahl steht.

Wenn dir das nicht genau genug ist, musst Du dir erst überlegen, wie Du matchen willst. Regex ist keine Magie, das kann auch nur, was Du vorher genau definiert hast.

EveretEichhorn 
Fragesteller
 06.12.2021, 17:08

"Leider" ist die Programmierung keine Magie, sondern viel Hirnschmalz.
Der Hinweis hilft mir auch weiter.
Vielen Dank!

1
Palladin007  06.12.2021, 17:14
@EveretEichhorn

Naja, hier handelt es sich um Namen, eine Garantie, dass es immer 100% zuverlässig ist, wirst Du nicht kriegen.

Ich persönlich würde vermutlich das letzte Vorkommen von einem Leerzeichen, min. einer Zahl und allen Zeichen ohne Leerzeichen suchen.

Ergo:

\s+(\d+[^\s]*)\s*$

Auch das ist nicht zuverlässig, aber dann baue ich lieber ein Feature ein, die erkannte Hausnummer nochmal zu korrigieren.

0

Puh, Hausnummern können komisch sein.

Kannst natürlich eine Zahl und danach alles matchen [0-9].*

Schau mal auf https://regex101.com da gibt es auch gute Erklärungen für Regex und man kann gut testen.

Wäre bei so was aber vorsichtig, ich hatte es schon öfter das ich Probleme hatte meine Adresse einzugeben eben weil irgendwas nicht beachtet wurde. Manchmal gibts auch Zimmernummern in Wohnheimen usw. die Leute da angeben. Viel zu beachten.

Woher ich das weiß:Berufserfahrung – Software Entwickler / Devops
EveretEichhorn 
Fragesteller
 06.12.2021, 16:43

Top, vielen Dank - dann schau ich da mal rein.

Ja, Hausnummern können viel Spaß bereiten ... :-/

Soll mal eine erste Anlaufhilfe werden um den Großteil angehen zu können. Mit dem Rest muss man dann schauen.

Die Nummer, bzw. Zusätze habe ich jetzt mal gut rausbekommen.

Jetzt geht es nur noch drum, die Straße sauber abzugrenzen.

Hauptstr. 11/b wird mit [0-9]+[^a-z] zu Hauptstr.b

0

Muss es denn ein Regex sein? Ich hätte die Idee einfach die split() Methode für Strings zu verwenden. Der übergibt man ein Zeichen nach dem getrennt werden soll z.B. ein Leerzeichen und dann wird gibt die Methode einem einen Array zurück mit den Teilstrings.

EveretEichhorn 
Fragesteller
 06.12.2021, 16:39

In dem Fall ja.
Ich habe mal eine Leerstelle, mal ein Komma, mal ein Punkt - sprich es ist nicht immer einheitlich, an welcher Stelle ich splitten kann. :-(

1

Straße:

^([^,0-9]+)

Hausnummer:

[0-9]+.*

Ich habe die Syntax jetzt nicht genau im Kopf, aber:

Beliebiges Zeichen beliebig oft an die Nummer anhängen?

ich denke, das war [0-9].*

EveretEichhorn 
Fragesteller
 06.12.2021, 16:40

Klasse, vielen Dank.
Die Syntax hat mir weitergeholfen: [^0-9]+[*.]
Damit klappt es.

Jetzt will ich für die Straße noch versuchen, alles was ab der ersten Zahl kommt zu löschen, denn grad kommt noch "Hauptstr.b" an, statt "Hauptstr."

0