You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何优化正则表达式从美国地址中准确提取城市名称

美国地址城市名正则提取方案

原正则存在的问题

之前的正则只能匹配第一个样例,核心问题有4个:

  • 硬编码了州缩写规则CA?,仅能匹配C/CA开头的州,碰到TX、CO等其他州的地址直接失效
  • 用.*做贪婪匹配,地址里存在多个逗号分隔的公寓、套房字段时,会把前面无关的地址内容也匹配进来
  • 没有适配多词城市场景,San Francisco这类带空格的城市名无法完整匹配
  • 分隔符兼容逻辑不全,不同地址里州、邮编之间的连接符多变,容易出现漏匹配

优化后的正则表达式

直接使用下面的正则,取第一个捕获组的内容即可得到城市名:

(?:^|,)\s*(?:.*?[^\w])?([A-Z][a-z]+(?:\s[A-Z][a-z]+)*)\s*(?=[A-Z]{2}[,.\s-]*\d{5}\s*$)

匹配逻辑说明

  • 锚点选美国地址最固定的尾部结构:两位大写州缩写 + 5位数字邮编,不硬编码具体州名,适配全美所有州的地址格式
  • 城市名匹配规则兼容单字、多字场景:支持1个或多个「首字母大写、其余字母小写」的词组,能正确识别San Francisco这类带空格的城市名
  • 自动跳过城市名前面的公寓号、套房号、#标记等冗余字段,只取离州、邮编最近的符合城市命名规则的内容
  • 兼容逗号、空格、横杠等各类常见地址分隔符,不管城市和州之间有没有逗号、邮编和州之间用横杠还是空格连接,都能正常匹配

验证结果

针对给出的4条地址样例,提取结果完全符合预期:

  • Plano
  • Dallas
  • Parker
  • San Francisco

内容的提问来源于stack exchange,提问作者Wasim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 23:51:12