有没有一个能完全删除 HTML 标签的正则表达式呢?顺便说一下,我正在使用 Java。
有没有一个能完全删除 HTML 标签的正则表达式呢?顺便说一下,我正在使用 Java。
有一个针对HTML操作的Java库叫做JSoup。看一下clean()
方法和WhiteList
对象。这是一个易于使用的解决方案!
String plaintext = Jsoup.parse(html).text();
,此行代码的作用是将HTML字符串解析并转换为纯文本形式。 - jraramaJsoup.parse(html).text()
删除了所有标签和空格,只留下一个长长的单行文本,而new HtmlToPlainText().getPlainText(Jsoup.parse(html))
以简单的方式格式化文本,保留换行符、段落、项目符号等。 - isapir你应该使用一个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();
}
content = content.replaceAll("<[^>]+>", "");
这将仅移除标签,但不会移除其他HTML内容。对于更复杂的内容,您应该使用解析器。
编辑:为避免HTML注释问题,您可以采取以下措施:
content = content.replaceAll("<!--.*?-->", "").replaceAll("<[^>]+>", "");
s
和m
标志。 - Bart Kiers不,根据定义,正则表达式无法解析HTML。
你可以使用正则表达式s/<[^>]*\>//
或类似的简单方法,但这将是不够完善的,特别是如果你想要删除标签的内容。
正如另一个帖子所说,使用实际的HTML解析器。
htmlString = htmlString.replaceAll("(?s)<!--.*?-->", "");
您可以使用这个简单的代码来删除所有的HTML标签...
htmlString.replaceAll("\\<.*?\\>", ""))