正则表达式仅匹配(提取)地址字符串中的单词

Regex to match (extract) only words from address string

提问人:Andreas Hunter 提问时间:9/12/2022 更新时间:9/12/2022 访问量:42

问:

我有这样的输入地址列表:

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+)

正则表达式 字符串 UTF-8

评论

0赞 naif_d 9/12/2022
试试这个 (.[A-Z])\w+

答:

2赞 Tom Lord 9/12/2022 #1

很难知道这里的“完美”解决方案是什么样子的,因为这样的输入可能会遇到各种意想不到的边缘情况。但是,这是我的初步尝试,它至少正确处理了您给出的所有五个示例:

(?<= )[a-zA-Z][a-zA-Z ]*(?=,| )

演示链接

解释:

  • (?<= )是空间的后视。我选择了这个而不是更标准的“单词边界”,因为,例如,您不希望将 in 或 in 计为“单词”。\bth7-thOB.O.
  • [a-zA-Z][a-zA-Z ]*仅匹配字母和空格,其中第一个匹配的字符必须是字母。(您也可以等效地使用该选项使正则表达式不区分大小写,并在此处使用。/ia-z
  • (?=,| )是逗号或空格的前瞻。同样,我选择了这个而不是更标准的“单词边界”,因为,例如,您不希望将 in 计为“单词”。\bBB.O.