我试图通过一堆文本(位于变量整体中)搜索单词“he”,然后将其替换为“她” 然后我想再次搜索文本并用他替换“她”。 但是下面的常规exprssions是相互重叠的 - 在这个例子中,文本将全部是“他”
我的问题 - 无论如何组合正则表达式并同时执行两个操作?
#jackNew.heShe() == she
#jillNew.heShe() == he
whole=re.sub(r'(?i)\bhe\b', jackNew.heShe(), whole)
whole=re.sub(r'(?i)\bshe\b', jillNew.heShe(), whole)
非常感谢你的帮助。
答案 0 :(得分:1)
您可以利用re.sub(pattern, repl, string, count=0, flags=0)
如果
repl
是一个函数,则会针对模式的每个非重叠事件调用它。该函数接受一个匹配对象参数,并返回替换字符串。
import re
s = 'she said he was a nice girl'
re.sub('s?he', lambda m: 'he' if m.group() == 'she' else 'she', s)
给出
'he said she was a nice girl'
答案 1 :(得分:0)
嗯,这不是一蹴而就,但一个选择是采取不同的路线。您可以使用中间替换,例如: -
"he"
替换为"s@he"
"she"
替换为"he"
"s@he"
替换为"she"
这将解决您的问题。