3

我不太擅长正则表达式。有人可以帮我更换

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

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

使用正则表达式

4

4 回答 4

12

正则表达式匹配:

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

替换字符串:

$1></MessageParam>

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

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

更通用的版本:

正则表达式匹配:

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

替换字符串:

<$1$2></$1>

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

于 2012-12-25T05:58:20.093 回答
5

正则表达式

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

用。。。来代替

<$1$2></$1>
于 2012-12-25T06:24:25.503 回答
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);
    }
}
于 2012-12-25T07:50:19.103 回答
0

这对我有用:

xmlString.replaceAll("<(\\w*:*\\w+)/>", "<$1></$1>");
于 2021-12-17T16:18:24.770 回答