通常为了匹配完整的单词,我们使用 \b
作为单词分隔符,但是当我们处理包括标点符号的复合世界时,这种方法效果不太好。例如,假设有以下字符串:
basic school co-operative limited
如果我们应用以下正则表达式,我们将得到预期的合作
和有限
。发生这种情况是由于交流发电机的顺序造成的:
\b(co-operative|co|co.|limited)\b
如果我无法控制正则表达式交流发电机的顺序并且得到以下正则表达式,会发生什么情况?
\b(co|co.|co-operative|limited)\b
在这种情况下,只有 co limit
会匹配,而不是 co-operative limit
。有什么办法可以解决交替顺序的问题吗?
感谢您的无价帮助
最佳答案
由于您想要匹配完整的单词,因此可以将正则表达式末尾的 \b
断言更改为空格或字符串末尾的正向前瞻,例如
\b(co|co.|co-operative|limited)(?=\s|$)
如果您想在单词后允许使用某些标点符号,您可以将其添加到前瞻中,例如
\b(co|co.|co-operative|limited)(?=[\s.]|$)
关于python - 与标点符号匹配整个字符串(使用\b 的问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60105553/