2011-09-21 167 views
1

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

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

但如果我的文字是:

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

结果是:的

bzzzzzz blublu 

代替:

bzzzzzz blibli blublu 

谢谢您帮助

回答

8

*是贪婪而*?

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

,或者甚至更短:

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

它的作品,非常感谢 – pablo07

10

我建议不要用正则表达式这种东西。总有一个更好的解决方案,例如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'