德国地址的正则表达式

时间:2012-06-07 20:46:24

标签: regex street-address

我正在寻找一个Regex模式来查找德语地址。
问题是格式有点奇怪,并经常更改,样本:

Falcken Str. 45 F
Heinrich-Heine-Straße 62A, Berlin-Kreuzberg
Lindenstrasse 113; Kreuzberg; 10969 Berlin
Erkstrasse 7; Neuköln; 12043 Berlin
Werbellin Strasse 69; Neuköln; 12053 Berlin
Anschrift; Rudolfstrasse 8-10; Friedrichshain; 10245 Berlin
Maybachufer 3, Neukölln, 12047, Berlin, Germany (?)
Skalitzer Strasse 31-32; Kreuzberg; 10999 Berlin
Mühlen Strasse 17; Friedrichshain; 10243 Berlin
Am Flutgraben 1; Treptow; 12435 Berlin; Germany (?)
Rigaer Strasse 89; Friedrichshain; 10247 Berlin
Köpenicker Str. 12, 10997 Berlin-Kreuzberg
Schliemannstraße 27; 10437; Berlin
Michaelkirchstr. 32, 10179 Berlin
Maybachufer 44, Neukölln, 12045, Berlin, Germany
Alexanderstrasse 11; Mitte; 10178 Berlin
Café Dritter Raum - Hertzbergstr. 14 - 12055 Berlin

现在我试图将它们分成小组(至少[地址] [邮编] [柏林]) 但我无法抓住所有这些,我能想到的最好的是

^([a-zäöüß\s\d.,-]+?)\s*([\d\s]+(?:\s?[-|+/]\s?\d+)?\s*[a-z]?)?;*\s*(\d{5})\s*(.+)?$

(感谢stackoverflow上的另一个问题)。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

不规则数据会导致结果不一致。此外,正则表达式不是每个水晶滗水器的正确锤子。

实用的角度来看,我只是解析标准化地址(无论对德语地址意味着什么),并将剩余数据转储到另一个文件以进行手动地址修正。如果您的大多数地址格式错误,那么您可能需要访问某种地址更正数据库 - 通常是商业数据库,通常可以从相关的邮政服务获得。