使用正则表达式去除Html标签
我在我的Python模块中有一个正则表达式模式,用来去掉给定字符串中的HTML标签。
但是在这种情况下,它没有效果。
输入字符串:
string=<li class="
tal
"><h3><a href="/aclk?sa=l&ai=CoS4y-Wz0TrnqC8y0rAfysK2DB46PiJECzoK8_yKPwd4FCAAQAigCUL7Kz4P9_____wFg5erjg5gOoAH0m_XuA8gBAakCoqvilYNWVD6qBB1P0Dm6CNzrf62IC36fDvUIh77EpeheIRdH_YEaPw&sig=AOD64_2z9xPK8vOxUCpIGTjBcc2Lg-GAeA&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
希望对你有帮助。