Java RegEx将自关闭xml标记转换为结束标记

时间:2012-12-25 05:53:32

标签: java regex

我在RegEx方面不太好。有人可以帮我替换

<MessageParam name="0" desc="Source Queue" />

<MessageParam name="0" desc="Source Queue"></MessageParam>

使用正则表达式

3 个答案:

答案 0 :(得分:6)

匹配的正则表达式:

(<\s*MessageParam[^>]*)/\s*>

替换字符串:

$1></MessageParam>

您可能需要转义\字符(在其前添加额外的\)。

我认为>没有出现在属性的值中,并且XML是有效的。

更通用的版本:

匹配的正则表达式:

<\s*([^\s>]+)([^>]*)/\s*>

替换字符串:

<$1$2></$1>

对于这个,我不确定我所做的所有假设。但我仍然认为>没有出现在属性的值中,并且XML是有效的。

答案 1 :(得分:4)

正则表达式

<(\w+)(.+?)/>

替换为

<$1$2></$1>

答案 2 :(得分:0)

public static void format(String xmlNode) {
    Pattern patt = Pattern.compile("(<MessageParam[^>]*)(\\s*/>)");
    Matcher mattcher = patt.matcher(xmlNode);
    while (mattcher.find()){
        String result = mattcher.replaceAll("$1></MessageParam>");
        System.out.println(result);
    }
}
相关问题