正则表达式python优化或文本突出显示的想法

时间:2012-06-06 20:55:09

标签: python regex optimization

我有以下正则表达式,我需要一些建议。我需要建议如何在不改变单词形式的情况下突出显示文本(大写保持大写)。我有一个我想强调的单词列表,所以我得到以下内容:

  def tagText(self,listSearch,docText):  
    docText=docText.decode('utf-8') 

    for value in listSearch: 
       replace = re.compile(ur""+value+"",  flags=re.IGNORECASE | re.UNICODE)  
       docText = replace.sub(u"""<b style="color:red">"""+value+"""</b>""", docText,  re.IGNORECASE | re.UNICODE)

    return docText

1 个答案:

答案 0 :(得分:2)

您需要在替换字符串中使用占位符,而不是字面值。

def tag_text(self, items, text):
    text = text.decode('utf-8') 
    for item in items: 
        text = re.sub(
            re.escape(item), 
            ur'<b style="color:red">\g<0></b>', 
            text,
            flags=re.IGNORECASE | re.UNICODE)
    return text

print tag_text(None, ["foo", "bar"], "text with Foo and BAR")
# text with <b style="color:red">Foo</b> and <b style="color:red">BAR</b>

(我也稍微清理了你的功能,使它看起来更像“pythonic”)。