提问人:Andreas Hunter 提问时间:9/12/2022 更新时间:9/12/2022 访问量:42
正则表达式仅匹配(提取)地址字符串中的单词
Regex to match (extract) only words from address string
问:
我有这样的输入地址列表:
St. Washington, 80
7-th mill B.O., 34
Pr. Lakeview, 17
Pr. Harrison, 15 k.1
St. Hillside Avenue, 26
我如何只匹配来自这个地址的单词并得到这样的结果:
Washington
mill
Lakeview
Harrison
Hillside Avenue
就我而言,模式对我无济于事。(\w+)
答:
2赞
Tom Lord
9/12/2022
#1
很难知道这里的“完美”解决方案是什么样子的,因为这样的输入可能会遇到各种意想不到的边缘情况。但是,这是我的初步尝试,它至少正确处理了您给出的所有五个示例:
(?<= )[a-zA-Z][a-zA-Z ]*(?=,| )
解释:
(?<= )
是空间的后视。我选择了这个而不是更标准的“单词边界”,因为,例如,您不希望将 in 或 in 计为“单词”。\b
th
7-th
O
B.O.
[a-zA-Z][a-zA-Z ]*
仅匹配字母和空格,其中第一个匹配的字符必须是字母。(您也可以等效地使用该选项使正则表达式不区分大小写,并在此处使用。/i
a-z
(?=,| )
是逗号或空格的前瞻。同样,我选择了这个而不是更标准的“单词边界”,因为,例如,您不希望将 in 计为“单词”。\b
B
B.O.
评论