匹配地址的正则表达式:匹配具有不同结构的地址的问题
Regular Expression to match addresses: problem with matching addresses with different structures
我正在使用正则表达式来匹配街道地址的不同部分(街道编号、街道、城市...)。
到目前为止,除城市外,一切正常,具体取决于地址的结构:
我数据中的一些地址仅以城市结尾,例如:
“巴黎”
其他一些以城市、逗号和国家/地区结尾,结构如下:"Paris, France"
我发现正则表达式可以匹配除地址结尾(城市+国家)以外的所有内容,所以我想正确匹配城市。
我不能只匹配第一个词,因为有些城市由多个词组成(示例:Saint-Jean-Port-Joli)。
以下是我尝试匹配的城市:
(\w.*,|\w.*$)
不幸的是,这给了我:
"Paris" 用于以 "Paris" 结束的地址和
“巴黎”,“ 以 “法国巴黎”结尾的地址
我该怎么办?
感谢您的帮助,
蒂姆
如果您的正则表达式风格支持前瞻,这将非常简单:
^.+?(?=(, [\w\s]+)?)$
我添加了 \s 以便像布基纳法索这样的国家能够正确解析。请注意,如果您的字符串有多个逗号,这将包括最后一个逗号。
匹配所有不是逗号的字符:
^[^,]+
这匹配所有内容,但不包括第一个逗号或结尾,以先到者为准。
这也适用于其中包含各种字符的城市名称,例如 L'Haÿ-les-Roses, France
我正在使用正则表达式来匹配街道地址的不同部分(街道编号、街道、城市...)。 到目前为止,除城市外,一切正常,具体取决于地址的结构:
我数据中的一些地址仅以城市结尾,例如:
“巴黎”
其他一些以城市、逗号和国家/地区结尾,结构如下:"Paris, France"
我发现正则表达式可以匹配除地址结尾(城市+国家)以外的所有内容,所以我想正确匹配城市。
我不能只匹配第一个词,因为有些城市由多个词组成(示例:Saint-Jean-Port-Joli)。
以下是我尝试匹配的城市:
(\w.*,|\w.*$)
不幸的是,这给了我: "Paris" 用于以 "Paris" 结束的地址和 “巴黎”,“ 以 “法国巴黎”结尾的地址
我该怎么办?
感谢您的帮助, 蒂姆
如果您的正则表达式风格支持前瞻,这将非常简单:
^.+?(?=(, [\w\s]+)?)$
我添加了 \s 以便像布基纳法索这样的国家能够正确解析。请注意,如果您的字符串有多个逗号,这将包括最后一个逗号。
匹配所有不是逗号的字符:
^[^,]+
这匹配所有内容,但不包括第一个逗号或结尾,以先到者为准。
这也适用于其中包含各种字符的城市名称,例如 L'Haÿ-les-Roses, France