我在RegEx方面不太好。有人可以帮我替换
<MessageParam name="0" desc="Source Queue" />
与
<MessageParam name="0" desc="Source Queue"></MessageParam>
使用正则表达式
答案 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);
}
}