用regex替换sub()方法的字符串

2024-04-29 00:28:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我不想写和问这个论坛,但我卡住了,我下面的书,应该是初学者,是什么,但

不管怎样。。。在下面的字符串中:

'Agent Alice told Agent Bob that Agent Steve was a double agent.'

我只想出示代理人名字的第一个字母。所以我的结论是:

'Agent A**** told Agent B**** that Agent S**** was a double agent.'

我试着使用分组,就像在书中,但它不起作用

namesRegex = re.compile(r'\w?([A-Z])')
mo = namesRegex.sub(r'\1****', 'Agent Alice told Agent Bob that Agent 
Steve was a double agent.')
print(mo)

另外,我也欢迎任何关于这个主题的额外资源的建议,提前感谢


Tags: 字符串that论坛agentstevemobobdouble
1条回答
网友
1楼 · 发布于 2024-04-29 00:28:35

您可以使用look behind ?<=语法:

namesRegex = re.compile(r'(?<=Agent\s[A-Z])\w+')
mo = namesRegex.sub(r'****', 'Agent Alice told Agent Bob that Agent Steve was a double agent.')

mo
# 'Agent A**** told Agent B**** that Agent S**** was a double agent.'

这将用****替换模式Agent\s[A-Z]后的任何单词字符\w+,包括字母数字字符和下划线_。如果不能保证代理的名字以大写字母开头Agent\s[A-Za-z]将是一个限制较少的选项

相关问题 更多 >