Python 正则表达式 : treat apostrophe as text

标签 python regex

我的目标是在文本中找到一个词。需要注意的是,我需要将撇号视为文本。

让我用一个例子来解释。假设我要在文本中查找单词 don:don't trust don。我需要匹配 don 而不是 don't

我从这个正则表达式开始:r'(?:\b)%s(?:\b)' % re.escape("don") 但是这里它匹配 不要。然后我尝试了 r'(?:\b|\w\')%s(?:\b|\'\w)' % re.escape("don"),但无济于事.

如何让我的正则表达式将撇号视为文本?

编辑:我没有提到的一些边缘情况:'dondon' 是正确匹配,而 t'dondon't'don' 不是。

最佳答案

使用否定的前瞻断言:

r'(?:\b)%s(?!\'\w)(?:\b)'

我把它放在 regex101 上了带有演示。

否定先行使表达式匹配 don 只有 如果它后面没有紧跟 '\w。您的版本无论如何都匹配,因为您在 (?:\b|\'\w) 中的两个选项都匹配。

关于Python 正则表达式 : treat apostrophe as text,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21266199/

相关文章:

java - 正则表达式,排除非数字

Javascript RegExp.test 总是返回 true

python - 如何测试Python对象的不相等性?

python - 仅使用 Tensorflow 进行目标检测的区域提案网络训练

python Pandas 初学者 : multi-dimensional data-analysis workflow (groupby+agg+plot)

ruby - 在 Ruby 中,为什么 "omega-3 (dHA)".gsub(/\b([a-z])/, '\0' .upcase) 不起作用?

python - 查找一条线上距第一个点 X 轴特定距离的点

python - 如何将深度为 2 的元组转换为 2D Numpy 数组?

javascript - 用逗号分割字符串,但使用 Javascript 忽略双引号内的逗号

java - 使用 apache poi 的 PatternSyntaxException