2010-11-01 42 views
2

我想编写一个突出显示某些文本的函数。 它需要一个HTML字符串作为输入并返回带有附加html标签的HTML字符串。Python。替换html标签之间的文本

例如: 输入字符串(需要强调的词 “文本”):

<div> 
<a href="..." title="text to highlight">Some text to highlight</a> 
<a href="..." title="text to highlight">Some other text to highlight</a> 
</div> 

输出字符串:

<div> 
<a href="..." title="text to highlight">Some <b class="highlight">text</b> to highlight</a> 
<a href="..." title="text to highlight">Some other <b class="highlight">text</b> to highlight</a> 
</div> 

我发现,只有html标签之间的匹配文本的正则表达式,但我不知道如何用附加标签包围它的一部分

highlight_str = u'text' 
p = re.compile(r"[^<>]+(?=[<])") 
    iterator = p.finditer(search_str) 
    for match in iterator: 
     # code for replacement here ??? 

有没有其他想法可以做到这一点?

+7

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – user470379 2010-11-01 13:52:16

+0

严重的是,在HTML上使用正则表达式的程序员的游行是无止境的。 – hughdbrown 2010-11-01 14:31:02

+0

该正则表达式不适用于任何其他操作,而不适用于操纵演示。 – tchrist 2010-11-01 14:31:59

回答

4

看看Beautiful Soup

+0

你可以多给一点信息如何使它与美丽的汤? – andrexus 2010-11-01 20:41:04

+0

这里http://pastebin.com/YsCTpeQB我创建了这个例子。 – demas 2010-11-02 10:31:57