是否有可以完全删除HTML标记的正则表达式? 顺便说一下,我正在使用Java。
答案 0 :(得分:22)
JSoup 是一个用于HTML操作的java库。查看clean()
方法和WhiteList
对象。易于使用的解决方案!
答案 1 :(得分:20)
您应该使用HTML解析器。我喜欢htmlCleaner,因为它给了我一个漂亮的HTML版本。
使用htmlCleaner,您可以:
TagNode root = htmlCleaner.clean( stream );
Object[] found = root.evaluateXPath( "//div[id='something']" );
if( found.length > 0 && found instanceof TagNode ) {
((TagNode)found[0]).removeFromTree();
}
答案 2 :(得分:5)
如果您只需要删除标签,则可以使用此正则表达式:
content = content.replaceAll("<[^>]+>", "");
它只删除标签,但不删除其他HTML内容。对于更复杂的事情,您应该使用解析器。
编辑:为避免HTML评论出现问题,您可以执行以下操作:
content = content.replaceAll("<!--.*?-->", "").replaceAll("<[^>]+>", "");
答案 3 :(得分:4)
没有。正则表达式无法按定义解析HTML。
你可以使用正则表达式s/<[^>]*\>//
或类似的东西,但它不够,特别是如果你有兴趣删除标签的内容。
正如另一张海报所说,使用实际的HTML解析器。
答案 4 :(得分:1)
您不需要任何HTML解析器。以下代码删除了所有HTML注释:
htmlString = htmlString.replaceAll("(?s)<!--.*?-->", "");
答案 5 :(得分:0)
或者,如果您的目的是显示用户控制的输入回客户端,那么您也可以将所有<
替换为<
和所有{{1由>
提供。这样,客户端的应用程序(webbrowser)就不会将HTML解释为。
如果您使用JSP作为视图技术,那么您可以使用JSTL的c:out
。它默认会转义所有HTML实体。例如,
>
不会显示警告,只是按原样显示实际字符串。
答案 6 :(得分:0)
您可以使用此简单代码删除所有html标记...
htmlString.replaceAll("\\<.*?\\>", ""))