匹配地址的正则表达式:匹配具有不同结构的地址的问题
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 以便像布基纳法索这样的国家/地区可以正确解析。请注意,如果您的字符串有多个逗号,这将包括最后一个。
【讨论】:
非常感谢您的帮助!!以上是关于匹配地址的正则表达式:匹配具有不同结构的地址的问题的主要内容,如果未能解决你的问题,请参考以下文章