regex 如何使用正则表达式替换单词同时保留标点符号?[duplicate]

tyu7yeag  于 2023-01-27  发布在  其他
关注(0)|答案(1)|浏览(179)
    • 此问题在此处已有答案**:

How to replace only part of the match with python re.sub(6个答案)
6天前关闭。
我的目标是使用regex和python库re替换所有后跟标点符号的"cat"示例,同时保留标点符号,这是我目前为止的方法,也是一个可重复性最低的示例:

import re

your_string = "Is this cat sleeping? Sleepy cat? Sleepy cat!"

match = re.findall(r"\bcat[/./?!]", your_string)
new_string = re.sub(r"cat","dog", match)
res_str = re.sub(r"\bcat[/./?!]", new_string, your_string, flags=re.IGNORECASE)

理想的输出应为:"这只猫在睡觉吗?瞌睡虫?瞌睡虫!"
编辑:我的尝试没有成功,因为它看起来很难。sub不能接受字符串列表

deyfvvtc

deyfvvtc1#

使用lookaround〉〉\bcat(?=[/./?!])更改正则表达式。
通过这种方式,您可以直接使用sub函数,如下所示。

import re

your_string = "Is this cat sleeping? Sleepy cat? Sleepy cat!"

re.sub(r"\bcat(?=[/./?!])","dog", your_string)

检查here演示。

相关问题