2016-04-14 6 views
0

私はジンジャーテンプレートで表示しようとしているドキュメントがあります。このような文字列を置き換えようとしていますnegxxx string xxxneg<span class="SomeCssClass_neg_xxx"> string </span>になる必要があります。問題は一致するグループ番号\1を使用していることです。私は複数のマッチがあるだけでなく、1.いくつかの助けが必要であることを知っているpython regexすべての出現を一致した文字列に置き換えます。

import re 
StringIn = 'negxxx data1 xxxneg out of span negxxx data2 xxxneg negzzz data1 zzzneg out of span negzzz data2 zzzneg' 
StringIn = re.sub(r"negxxx(.*)xxxneg", r"<span class='neg_xxx'>\1</span>" , StringIn) 
StringIn = re.sub(r"negzzz(.*)zzzneg", r"<span class='neg_zzz'>\1</span>" , StringIn) 
print StringIn 

私が手:私は必要なものを、正しくない

<span class='neg_xxx'> data1 xxxneg out of span negxxx data2 </span> <span class='neg_zzz'> data1 zzzneg out of span negzzz data2 </span> 

は次のとおりです。

<span class='neg_xxx'> data1 </span> out of span <span class='neg_xxx'> data2 </span><span class='neg_zzz'> data1 </span> out of span <span class='neg_zzz'> data2 </span> 
+0

:一度に1つの文字を食べた後、残りのパターンに一致するようにしようと怠惰な数量詞、.*?を、使用してください。 ☻ –

+1

私は野生の推測をさせてください。怠惰な '? '量子で試してください。 '。*'はあまりにも多く一致しています。 '。*?'を使用してください。 –

答えて

0

あなた.*は、文字列の最後にレースだけ最寄りにバックアップされます(文字列の終わりまで) "xxxneg"。テンプレート**私は**忍者としてそれを読ん秒間

import re 
StringIn = 'negxxx data1 xxxneg out of span negxxx data2 xxxneg negzzz data1 zzzneg out of span negzzz data2 zzzneg' 
StringIn = re.sub(r"negxxx(.*?)xxxneg", r"<span class='neg_xxx'>\1</span>" , StringIn) 
StringIn = re.sub(r"negzzz(.*?)zzzneg", r"<span class='neg_zzz'>\1</span>" , StringIn) 
print StringIn 
+0

negxxx新しい行のあるデータ\ n xxxnegが機能しませんでした。助言がありますか ? – Hakim

関連する問題