匹配地址的正则表达式:匹配具有不同结构的地址的问题

Posted

技术标签:

【中文标题】匹配地址的正则表达式:匹配具有不同结构的地址的问题【英文标题】:Regular Expression to match addresses: problem with matching addresses with different structures 【发布时间】:2021-12-07 18:26:18 【问题描述】:

我使用正则表达式来匹配街道地址的不同部分(街道编号、街道编号、城市...)。 到目前为止,除了城市之外,一切都正常,具体取决于地址的结构:

我的数据中的某些地址仅以城市结尾,例如: “巴黎” 还有一些以城市、逗号和国家结尾,遵循以下结构:“Paris, France” 我发现正则表达式可以匹配除地址结尾(城市+国家)之外的所有内容,所以我想正确匹配城市。

我不能只匹配第一个单词,因为有些城市由多个单词组成(例如:Saint-Jean-Port-Joli)。

这是我尝试匹配的城市:

(\\w.*,|\\w.*$)

不幸的是,这给了我: "Paris""Paris" 结尾的地址和 "Paris,""Paris, France"

结尾的地址

我该怎么办?

感谢您的帮助, 蒂姆

【问题讨论】:

【参考方案1】:

匹配所有非逗号的字符:

^[^,]+

见live demo。

这匹配所有内容,但不包括第一个逗号或结尾,以先到者为准。

这也适用于包含各种字符的城市名称,例如L'Haÿ-les-Roses, France

【讨论】:

非常感谢,这正是我所需要的!【参考方案2】:

如果您的正则表达式支持前瞻,这非常简单:

^.+?(?=(, [\w\s]+)?)$

我添加了 \s 以便像布基纳法索这样的国家/地区可以正确解析。请注意,如果您的字符串有多个逗号,这将包括最后一个。

【讨论】:

非常感谢您的帮助!!

以上是关于匹配地址的正则表达式:匹配具有不同结构的地址的问题的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式匹配比特币地址?

Python 匹配具有指定异常的正则表达式

python中利用正则表达式匹配ip地址

如何用正则表达式匹配出如下代码中的IP地址跟IP地址归属地?

如何用正则表达式匹配IP地址

正则表达式匹配 IP 地址 [关闭]