Regex por dividir um endereço alemão em suas partes

Boa noite

Estou tentando dividir as partes de uma cadeia de endereços alemã em suas partes via Java. Alguém conhece um regex ou uma biblioteca para fazer isso? Para dividir da seguinte forma:

Name der Straße 25a 88489 Teststadt
par
Name der Straße|25a|88489|Teststadt

o

Teststr. 3 88489 Beispielort (Großer Kreis)
par
Teststr.|3|88489|Beispielort (Großer Kreis)

Seria perfeito se o sistema / regex ainda funcionasse se partes como o CEP ou a cidade estivessem ausente

Existe algum regex ou biblioteca com a qual eu possa arquivar iss

EDIT: regra para endereços alemães:
Street: caracteres, números e espaços
House no: Number e quaisquer caracteres (ou espaço) até uma série de números (zip) (pelo menos nesses exemplos)
Zip: 5 dígitos
Lugar ou Cidade: O resto talvez também com espaços, vírgulas ou chaves

questionAnswers(12)

yourAnswerToTheQuestion