我想要一个可以匹配HTML源页面中的条件注释的正则表达式,所以我只能删除那些.我想保留常规评论.
我也想避免使用.*?符号如果可能的话.
文字是
foo bar
我想在去除一切
编辑:这是因为BeautifulSoup我想删除这些标签.BeautifulSoup无法解析并提供不完整的来源
EDIT2: [如果IE]不是唯一的条件.还有更多,我没有任何可能的组合列表.
EDIT3: Vinko Vrsalovic的解决方案有效,但是为什么beautifulsoup失败的实际问题是由于条件评论中的流氓评论.喜欢
请注意评论?
虽然我的问题已经解决了,但我希望得到一个正则表达式的解决方案.
>>> from BeautifulSoup import BeautifulSoup, Comment >>> html = '' >>> soup = BeautifulSoup(html) >>> comments = soup.findAll(text=lambda text:isinstance(text, Comment) and text.find('if') != -1) #This is one line, of course >>> [comment.extract() for comment in comments] [u'[if IE]> bloo blee>> print soup.prettify() >>>
python 3与bf4:
from bs4 import BeautifulSoup, Comment html = '' soup = BeautifulSoup(html, "html.parser") comments = soup.findAll(text=lambda text:isinstance(text, Comment) and text.find('if') != -1) #This is one line, of course [comment.extract() for comment in comments] [u'[if IE]> bloo blee如果您的数据与BeautifulSoup混淆,您可以事先修复它或自定义解析器,以及其他解决方案.
编辑:根据您的评论,您只需根据需要修改传递给findAll的lambda(我修改了它)