2017-05-17 9 views
1

^持つ:。の非欲張りマッチは*文字列が与えられ

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')^出力:

は、なぜあなたはPLACEXHOLDER

をバー狛犬でした

\^でエンコードされている未知数の複数の部分文字列が存在する可能性があります。このため、これはd esired:

re.sub('(\^.+\^).*(\^.*\^)', 'PLACEXHOLDER', s) 

答えて

4

スターの後に疑問符を追加すると、貪欲ではありません。適切

\^.*?\^ 

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> 
に置き換え
関連する問題