python - 不要替换 python 中包含撇号或 & 的单词

标签 python regex

我有以下设置:

fword = "don"
comment_true = "Don is bad. Don't eat nails. Carl&Don. Don&Carl. Don, Don."
comment_false = "Don't do this"
replace_with = "[ANONYMISED]"

首先,我想检查fword是否在comment_truecomment_false中。

接下来,我想用 replace_with 替换 fword

结果字符串应该是:

comment_true:

“[ANONYMISED] 不好。不要吃指甲。Carl&Don。Don&Carl。[ANONYMISED],[ANONYMISED]。”

comment_false:

“不要这样做”

目前我正在使用的第一个任务:

 True if re.search(r'\b%s\b' % fword, comment) else False

对于我正在使用的第二个任务

re.compile(r"\b%s\b" % fword, re.IGNORECASE).sub(replace_with, comment)

但是对于这个问题,它们是不够的,因为像“don't”或 Carl&Don 这样的缩写部分是匹配的。这个问题不是简单的空格检查,因为我只需要转义一些符号。

请参阅此处的示例: https://regexr.com/42bc8

我怎样才能实现这个目标?

最佳答案

尝试正则表达式:(?:^|(?<=\s))don(?=,|\.|\s|\Z)

Demo

关于python - 不要替换 python 中包含撇号或 & 的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53102511/

相关文章:

java - 从 OpenCV 的 LBP 实现中提取特征向量

python - 如何以编程方式并发驱动 Ansible?

python - 文本处理 - Python 与 Perl 的性能对比

javascript - JS 如何测试一个字符串是否只是缩写?

regex - 如何在 Perl 替换中替换匹配项之前的所有文本?

python - 行选择结合了 pandas 数据框中索引的条件和列的条件

python - 维护重复元素和非重复元素之间的关系

用于 url 验证的 PHP 正则表达式,filter_var 过于宽松

javascript - 匹配 "After"如果它后面没有一个 -ing 词

python - 使用 ransac 时如何获得更多内点?