![](/img/trans.png)
[英]python regex replace all occurances of word that starts with “:” and next character is letter
[英]python regex replace all occurances with the matched string
我有一个文档,试图将其显示在Jinja模板中。 我正在尝试替换此字符串,例如negxxx string xxxneg
需要变为<span class="SomeCssClass_neg_xxx"> string </span>
。 问题是我正在使用匹配的组编号\\1
。 我知道我不仅有多次比赛,还需要一些帮助。
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>
您的.*
正在加速到字符串末尾,并且仅备份到最近的(到字符串末尾)“ 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.