我正在尝试替换一个单词(例如 on
),如果它在两个子字符串(例如 <temp>
和 </temp>
)之间出现,但其他需要保留的单词也存在。
string = "<temp>The sale happened on February 22nd</temp>"
替换后期望得到的字符串为:
Result = <temp>The sale happened {replace} February 22nd</temp>
我尝试使用正则表达式,但只能找到如何替换两个<temp>标签之间的所有内容(因为有
.*?
)。
result = re.sub('<temp>.*?</temp>', '{replace}', string, flags=re.DOTALL)
然而,on
可能会在字符串中后出现,但不在 <temp></temp>
之间,我不想替换它。
<replace>
元素,然后关闭</temp>
。 - user5547025on
需要替换还是所有的on
都需要替换?如果您想将所有的空格+on
+空格替换为空格+{replace}
+空格,请使用re.sub('<temp>(.*?)</temp>', lambda m: "<temp>{}</temp>".format( m.group(1).replace(" on ", " {replace} ") ), string, flags=re.DOTALL)
。 - Wiktor Stribiżew