2012-06-07 86 views
2

我正在尋找正則表達式模式來查找德國地址。
問題是,格式是有點奇怪,和變化頻繁,樣本:正則表達式爲德國地址

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*(.+)?$ 

(感謝計算器上的另一個問題)。

任何想法?

+0

所以你想seperatie Germanfrom非德國地址?然後提供一些來自線條的樣本輸入以匹配並匹配。如果你想從它們中提取某些信息,那麼也要指定它。 – buckley

+0

我想將它們分組(地址,城市和郵政編碼)以便插入到數據庫 – Asaf

+0

好了,現在是我的問題的第一部分,還是讓您的正則表達式只在德國地址上鬆動? – buckley

回答

3

不規則的數據會導致不一致的結果。另外,正則表達式對於每個水晶潷水器都不是正確的錘子。

實用的觀點,我只是解析標準化地址(無論這意味着德國的地址),並轉儲剩菜到另一個文件手動地址更正。如果您的地址的大多數的格式不正確,那麼您可能需要訪問某種類型的地址更正數據庫 - 通常是商業的,並且通常可以從涉及的郵政服務中獲得。