删除正则表达式中的Html标记

时间:2011-12-23 13:49:40

标签: python regex

  

可能重复:
  Strip html from strings in python
  RegEx match open tags except XHTML self-contained tags

我的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 :(得分:4)

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

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

应该有用。

但是......您不应该使用正则表达式进行HTML解析,请参阅:https://stackoverflow.com/a/1732454/11621

HTH。

答案 1 :(得分:2)

谷歌或搜索Stackoverflow的HTML和正则表达式 - 这是一个坏主意。你最好使用Beautiful Soup或其他一些真正的HTML解析器并修改DOM。

答案 2 :(得分:0)

如果您只想从字符串中删除所有HTML,可以查看以下内容:http://code.activestate.com/recipes/440481-strips-xmlhtml-tags-from-string/