我正在尝试查找Street|St|Drive|Dr
,然后获取该行的所有内容以提取地址:
(?:(?!\s{2,}|\$).)*(Street|St|Drive|Dr).*?(?=\s{2,})
..但它也匹配:
Full match 420-442 ` Tax Invoice/Statement`
Group 1. 433-435 `St`
Full match 4858-4867 `163.66 DR`
Group 1. 4865-4867 `DR`
Full match 11053-11089 ` Permanent Water Saving Plan, please`
Group 1. 11077-11079 `Pl`
我如何仅匹配整个单词而不匹配子串,因此忽略contain
这些单词(例如第一个匹配)的单词。
答案 0 :(得分:1)
一种选择是使用单词边界锚\b
来完成此任务:
(?:(?!\s{2,}|\$).)*\b(Street|St|Drive|Dr)\b.*?(?=\s{2,})
如果你提供一个你要解析的原始文本的例子,如果这不起作用,我将能够提供额外的帮助。
编辑:
从the link you posted in a comment开始,\b
解决方案似乎解决了您的问题:
我如何只匹配整个单词而不匹配子串,因此忽略包含这些单词的单词(例如第一个匹配)。
但是,您的正则表达式似乎还有其他问题。