使用正则表达式去除Html标签

0 投票
3 回答
578 浏览
提问于 2025-04-17 08:54

可能重复的问题:
在Python中去除字符串中的HTML
正则表达式匹配开放标签,除了XHTML自包含标签

我在我的Python模块中有一个正则表达式模式,用来去掉给定字符串中的HTML标签。

但是在这种情况下,它没有效果。

输入字符串:

string=<li class="
      tal
    "><h3><a href="/aclk?sa=l&amp;ai=CoS4y-Wz0TrnqC8y0rAfysK2DB46PiJECzoK8_yKPwd4FCAAQAigCUL7Kz4P9_____wFg5erjg5gOoAH0m_XuA8gBAakCoqvilYNWVD6qBB1P0Dm6CNzrf62IC36fDvUIh77EpeheIRdH_YEaPw&amp;sig=AOD64_2z9xPK8vOxUCpIGTjBcc2Lg-GAeA&amp;adurl=http://www.policybazaar.com/creditcards/creditcard-india.aspx%3Futm_source%3Dgoogle%26utm_medium%3Dppc%26utm_term%3DCreditcard_delhi_only%26utm_campaign%3Dcredit_card" id="pa2">Compare <b>Credit Cards</b> | PolicyBazaar.com</a></h3>Get Best <b>Credit Card</b> For Free, Now U Have a Choice, Choose wisely!<br /><cite>www.policybazaar.com/<b>credit</b>-<b>Cards</b></cite></li>

正则表达式模式:

 In [64]:p = re.compile(r'<.*?>')
 In [65]:text=p.sub('',str(string))
 In [66]: text
 Out[66]: '<li class="\n          tal\n        ">Compare Credit Cards | PolicyBazaar.comGet Best Credit Card For Free, Now U Have a Choice, Choose wisely!www.policybazaar.com/credit-Cards'

结果中仍然有 <li> 标签。应该不管这个类名和字符串模式,直接把它去掉。

3 个回答

0

如果你只是想把字符串中的所有HTML标签去掉,可以看看这个链接:http://code.activestate.com/recipes/440481-strips-xmlhtml-tags-from-string/

2

在Google或者Stackoverflow上搜索HTML和正则表达式,这其实不是个好主意。你更应该使用Beautiful Soup或者其他真正的HTML解析器,来修改DOM(文档对象模型)。

3

在这种情况下,你应该使用 DOTALL 功能:

p = re.compile(r'<.*?>',re.DOTALL)

这样应该可以正常工作。

不过……你不应该用正则表达式来解析HTML,看看这个链接: https://stackoverflow.com/a/1732454/11621

希望对你有帮助。

撰写回答