Python正则表达式子

时间:2011-09-21 07:59:46

标签: python regex

我想删除所有评论。这是我的正则表达式:

re.sub(re.compile('<!--.*-->', re.DOTALL),'', text)

但如果我的文字是:

bzzzzzz <!-- blabla --> blibli <!-- bloblo --> blublu

结果是:

bzzzzzz blublu

而不是:

bzzzzzz blibli blublu

感谢您的帮助

2 个答案:

答案 0 :(得分:11)

我建议不要将正则表达式用于此类内容。总有一个更好的解决方案,例如lxml.html.clean

你的例子:

import lxml.html.clean as clean
cleaner = clean.Cleaner(comments=True)
cleaner.clean_html("bzzzzzz <!-- blabla --> blibli <!-- bloblo --> blublu")
#'bzzzzzz  blibli  blublu'

答案 1 :(得分:8)

*贪婪而*?不是

re.sub(re.compile('<!--.*?-->', re.DOTALL), '', text)

或者更短:

re.sub('(?s)<!--.*?-->', '', text)