Java 如果span标记具有属性,则使用正则表达式过滤span标记

Java 如果span标记具有属性,则使用正则表达式过滤span标记,java,regex,Java,Regex,我有下面的代码,如果span标记没有任何使用java的属性,我想在其中剥离或删除span标记 此正则表达式删除所有SPAN标记。]]> e、 g 输出: <span style="font-weight: bold;text-decoration-line: underline;">test</span><p>&nbsp;</p><p>Table</p> 有什么帮助吗?用java代码试试这个 var str =

我有下面的代码,如果span标记没有任何使用java的属性,我想在其中剥离或删除span标记

此正则表达式删除所有SPAN标记。]]>

e、 g

输出:

  <span style="font-weight: bold;text-decoration-line: underline;">test</span><p>&nbsp;</p><p>Table</p>
有什么帮助吗?

用java代码试试这个

var str = // your string here

str = str.replaceAll("<\\/span[^>]*>", "");

这是不可能的。正则表达式无法知道哪个结束标记属于要删除的。使用HTML解析器,例如

编辑:

实例
str=str.replace/]*>/g,;请先在此网站上试用]*>使用此功能此功能无效。它将删除所有结束标记,即使是属于未删除的开始标记的标记。在您提供的网站中,如果我将其放入正则表达式中,]*>它与任何内容都不匹配。@Kalpesh str=str.replaceAll]*>;“我们有样本来实现这一点吗?”Kalpesh补充了一个例子。非常感谢。成功了。还有一个问题。其输出如下所示:测试

,在单独的行上。这可以是单行吗?您可以在文档的输出设置中禁用格式设置:doc.outputSettings.prettyPrintfalse;
var str = // your string here

str = str.replaceAll("<\\/span[^>]*>", "");
    String html = "<span style=\"font-weight: bold;text-decoration-line: underline;\">test</span><p><span>&nbsp;</span></p><p><span>Table</span></p>";

    Document doc = Jsoup.parse(html);

    for (Element span : doc.getElementsByTag("span")) {
        if (span.attributes().size() == 0) {
            span.unwrap();
        }
    }

    doc.outputSettings().prettyPrint(false);

    String result = doc.body().html();