给定字符串:
s = "Why did you foo bar a <b>^f('y')[f('x').get()]^? and ^f('barbar')^</b>"
如何用字符串替换^f('y')[f('x').get()]^
和^f('barbar')^
,例如 PLACEXHOLDER
?
所需的输出为:
Why did you foo bar a <b>PLACEXHOLDER? and PLACEXHOLDER</b>
我已经尝试过re.sub('^.*^', 'PLACEXHOLDER', s)
但是.*
很贪婪,它匹配,^f('y')[f('x').get()]^? and ^f('barbar')^
和输出:
你为什么 foo 酒吧 PLACEXHOLDER
可以有多个未知数字的子字符串由^
编码,因此不需要硬编码:
re.sub('(^.+^).*(^.*^)', 'PLACEXHOLDER', s)
如果在星号后面加一个问号,它将使其不贪婪。
^.*?^
http://www.regexpal.com/?fam=97647
Why did you foo bar a <b>^f('y')[f('x').get()]^? and ^f('barbar')^</b>
正确替换为
Why did you foo bar a <b>PLACEXHOLDER? and PLACEXHOLDER</b>