Grobe Idee:
- Den String rückwärts nach dem ersten Whitespace (Leerzeichen, Tab etc.) durchsuchen.
- Alles dahinter (also 1, 12 bzw. 62-64 in deinen Beispielen) in eine StringList mit Delimiter '-' stecken.
- Bei allen Elementen der StringList prüfen, ob sie eine Hausnummer sind, also z.B. nur aus Ziffern und evtl. hintendran einem Buchstaben ("Schlossberg 12a") bestehen.
- Falls ja, den Kandidaten aus Schritt 1 akzeptieren.
False positives und negatives wirst du nicht vermeiden können. Und ob du jetzt "Schlossberg 12 1/2" behandeln willst oder "Schlossberg 12, 3. Stock"...