【发布时间】:2022-02-19 05:21:34
【问题描述】:
免责声明:我从this answer 知道,正则表达式不适用于美国地址,因为它们不是常规的。但是,这是一个相当小的项目,我想看看我是否可以减少误报的数量。
我的挑战是区分(即匹配)“123 SOUTH ST”和“123 SOUTH MAIN ST”等地址。我能想出的最佳解决方案是检查定向词之后是否有超过 1 个词。
我的 python 正则表达式是这样的:
^(NORTH|SOUTH|EAST|WEST)(\s\S*\s\S*)+$
解释:
-
^(NORTH|SOUTH|EAST|WEST)匹配字符串开头的方向 -
(\s\S*\s\S*)+$尝试匹配一个空格、一个任意长度的单词、另一个空格和另一个任意长度的单词 1 次或多次
但我的表达似乎没有区分这两种术语。我的错误在哪里(除了对美国地址使用正则表达式)?
感谢您的帮助。
【问题讨论】:
-
您需要捕获组值吗?这部分
(\s\S*\s\S*)+将重复捕获组,在Python 中re将捕获最后一次迭代的值。\S*也是可选的,并且也将只匹配 2 个空格字符(也可以匹配 2 个换行符)