简体   繁体   English

如何删除正则表达式中的空标签?

[英]How remove empty tags in Regex?

I want to delete some empty tags, for example <A/> , <B/> , <C/> ,....我想删除一些空标签,例如<A/><B/><C/> ,....

How to remove these tags using Regex?如何使用正则表达式删除这些标签?

You can try to use this regex:您可以尝试使用此正则表达式:

<[^>]+\/>

Regex Demo正则表达式演示

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class HelloWorld{

    public static void main(String[] args) {
        final String regex1 = "<([a-zA-Z0-9-\\_]*)[^>]*/>";
        final String regex2 = "<([a-zA-Z0-9-\\_]*)[^>]*>\\s*</\\1>";

        String xmlString = " <xml><A>bla</A><B></B><B/><D><E><G><H/></G></E><F></F></D></xml>";

        System.out.println(xmlString);

        final Pattern pattern1 = Pattern.compile(regex1);
        final Pattern pattern2 = Pattern.compile(regex2);

        Matcher matcher1;
        Matcher matcher2;
        do {
            xmlString = xmlString.replaceAll(regex1, "").replaceAll(regex2, "");
            matcher1 = pattern1.matcher(xmlString);
            matcher2 = pattern2.matcher(xmlString);
        } while (matcher1.find() || matcher2.find());

        System.out.println(xmlString);
    }
}

Console:安慰:

<xml>
    <A>bla</A>
    <B></B>
    <B/>
    <D>
        <E>
            <G>
                <H/>
            </G>
        </E>
        <F></F>
    </D>
</xml>

<xml>
    <A>bla</A>
</xml>

Online demo here在线演示在这里

试试这个正则表达式:

/<[^\/>][^>]*><\/[^>]+>/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM