【问题标题】:Regex for German address德国地址的正则表达式
【发布时间】:2012-06-08 05:21:03
【问题描述】:

我正在寻找一种正则表达式模式来查找德国地址。
问题是格式有点奇怪,而且经常变化,样例:

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 的另一个问题)。

有什么想法吗?

【问题讨论】:

  • 所以您想将德语与非德语地址分开?然后从要匹配的行和要匹配的内容中提供一些示例输入。如果您想从中提取某些信息,请同时指定。
  • 我想将它们分成组(地址、城市和邮政编码)以便插入数据库
  • 好的,现在是我的问题的第一部分,还是让你的正则表达式只在德国地址上松散?
  • 正则表达式不是魔术,需要知道格式,这里似乎没有很好地定义。您可以很容易地匹配邮政编码,并在它之前和之后获取子字符串,但除此之外它变得复杂。
  • 您确定应该在此处发布实际地址列表吗?

标签: regex street-address


【解决方案1】:

不规则的数据会导致不一致的结果。此外,正则表达式并非适用于每一个水晶酒瓶。

实用的角度来看,我只是解析标准化地址(无论这对德国地址意味着什么),然后将剩余部分转储到另一个文件以进行手动地址更正。如果大部分您的地址格式不正确,那么您可能需要访问某种地址更正数据库——通常是商业的,并且通常可以从所涉及的邮政服务处获得。

【讨论】:

    猜你喜欢
    • 2010-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-23
    • 2021-02-06
    • 2016-02-22
    • 1970-01-01
    相关资源
    最近更新 更多