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

如何用正则表达式从地址字符串中提取纯单词内容?

问题解决方法

需求分析

你需要从给定地址中提取仅由纯字母组成的单词/短语(可包含空格分隔的多个单词),排除所有带数字、点号、连字符的内容,以及前缀缩写(如St.、Pr.)和后缀数字。原正则(\w+)仅能匹配单个单词,且会误匹配带数字/符号的片段,无法满足需求。

解决方案

推荐使用替换法:先定义正则匹配所有不需要的内容,将其替换为空,再清理多余空格即可得到目标结果。

正则说明

用于匹配需移除内容的正则:\S*[\d.-]\S*|,

  • \S*[\d.-]\S*:匹配任何包含数字(\d)、点号(.)或连字符(-)的连续非空白字符片段(如St.、7-th、B.O.、15、k.1)
  • |,:同时匹配并移除逗号

代码示例(以Python为例)

import re

# 输入地址列表
address_lines = [
    "St. Washington, 80",
    "7-th mill B.O., 34",
    "Pr. Lakeview, 17",
    "Pr. Harrison, 15 k.1",
    "St. Hillside Avenue, 26"
]

# 定义移除不需要内容的正则模式
clean_pattern = re.compile(r'\S*[\d.-]\S*|,')

# 逐行处理提取目标内容
for line in address_lines:
    cleaned = re.sub(clean_pattern, '', line).strip()
    print(cleaned)

运行结果

Washington
mill
Lakeview
Harrison
Hillside Avenue

另一种思路:直接匹配目标内容

如果需要直接匹配目标,可使用正则:\b([A-Za-z]+(?:\s[A-Za-z]+)*)\b(?!.*[\d.-]),但需注意逐行匹配时可能需要调整,替换法更简单通用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 18:10:29