删除正则表达式中的 Html 标签 [重复]

Posted

技术标签:

【中文标题】删除正则表达式中的 Html 标签 [重复]【英文标题】:Remove the Html tags in regex [duplicate] 【发布时间】:2012-01-26 20:38:17 【问题描述】:

可能重复:Strip html from strings in pythonRegEx 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'

结果仍然有&lt;li&gt; 标签。无论此类名称和字符串模式如何,都应如何删除它。

【问题讨论】:

【参考方案1】:

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

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

应该可以。

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

HTH。

【讨论】:

+1 但不是.*?lazy-dot-star,一个更快、更准确的表达式应该是:p = re.compile(r'&lt;[^&gt;]*&gt;'),或者更好的是:p = re.compile(r"""&lt;(?:[^&lt;&gt;"']+|"[^"]*"|'[^']*')*&gt;"""),它允许带有尖括号的属性.但正如其他人指出的那样,所有这些正则表达式仍然可能失败。最好使用专为这项工作设计的工具来解析 HTML(正如 Zsolt Botykai 在此答案中正确指出的那样)。 @ridgerunner TIL 关于属性中允许使用尖括号,哇 :-) 是的,你是对的,你的正则表达式更准确。我的只应该工作:-)【参考方案2】:

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

【讨论】:

我使用 Beautiful Soup 进行 HTML 解析。效果很好。【参考方案3】:

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

【讨论】:

以上是关于删除正则表达式中的 Html 标签 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式 - 删除标签 [重复]

PHP正则表达式删除HTML文档中的标签

从字符串中删除 HTML 标记的正则表达式 [重复]

想要删除任何 HTML 标签 [重复]

用于查找html标签的正则表达式[重复]

C#中特定html标签的正则表达式[重复]