我想做一个能识别瑞士官方邮政地址的正则表达式。它们看起来像这样:
Mr
Hans Schweizer
Gerechtigkeitsgasse 10
3011 Berne
Ms
Susi Frei
c/o Hans Schweizer
Gerechtigkeitsgasse 10
3011 Berne
Mr
Erich Müller
Bahnhofstrasse 4/8
8001 Zurich
所以从文本中可以看出:
'You should send a letter to:
Mr
Hans Schweizer
Gerechtigkeitsgasse 10
3011 Berne
and tell him all about your last summer...'
Regex应该只提取有关地址的信息。
我看了这篇文章:FInd a US street address in text (preferably using Python regex)
我试着模仿它,但我失败了,我不能让它工作。
地址应包含:
gender (Herr|Frau|Mrs|Mr|Ms)
name: two or 3 string titled words
street: (strasse|gasse|weg|platz|promenade)
code: int numbers
city: (Zurich|Zürich|Basel|Geneva|Lausanne|Bern|Winterthur|Lucerne|St. Gallen|St.Gallen)
因此,瑞士95%的街道都有后缀“strasse”或“gasse”等,我只在寻找一些城市(但后来我可能会添加更多)。
我的问题是,我不知道如何把所有这些放在一个正则表达式中。
你能告诉我如何使regex将识别瑞士地址。
1条答案
按热度按时间i86rm4rw1#
类似于:
(Herr|Frau|Mrs|Mr|Ms)\n([a-zA-Zü]+ ){1,2}[a-zA-Zü]+\n[a-zA-Zü]+(strasse|gasse|weg|platz|promenade) ([0-9]{1,4}|[0-9]{1,4}/[0-9]{1,4})\n[0-9]{1,4} (Zurich|Zürich|Basel|Geneva|Lausanne|Bern|Winterthur|Lucerne|St. Gallen|St.Gallen)
如果你想要更多的信息,不要犹豫问。也许有什么不对的地方不要忘记我使用
[a-zA-Z]+
添加所有重音字符等...下面是一个关于如何检查它的示例代码:
输出如下(测试4、5和6为错误文本):
你的第二个例子不起作用,因为比其他例子多了一条车道,而你没有在解释中提到它(
c/o Hans Schweizer
)。所以请随意指出该车道的规则。