使用正则表达式将 SGML 转换为 XML?
Convert SGML to XML with regex?
我想使用正则表达式将 SGML 转换为 XML。喜欢:
转换:
<a><ab><abc>111<abc2>222</ab></a>
至:
<a><ab><abc>111</abc><abc2>222</abc2></ab></a>
然后我写了下面的代码来做转换:
String a = "<a><ab><abc>abc<abc2>abc2</ab></a>";
a = a.replaceAll("<([^<>]+?)>([^<>]+?)<(?!/\>)", "<></><");
System.out.println(a);
但是结果不是预期的:
<a><ab><abc>111</abc><abc2>222</ab></a>
我的问题是,是否可以使用正则表达式进行转换?如果是,我的代码有什么问题?
使用下面的正则表达式
<(([^<>]+?)>)([^<>]+?)(?=<(?!))
然后用
替换匹配项
<</>
https://regex101.com/r/cD1nC8/1
String s = "<a><ab><abc>111<abc2>222</ab></a>";
System.out.println(s.replaceAll("<(([^<>]+?)>)([^<>]+?)(?=<(?!\1))", "<</>"));
输出:
<a><ab><abc>111</abc><abc2>222</abc2></ab></a>
我想使用正则表达式将 SGML 转换为 XML。喜欢:
转换:
<a><ab><abc>111<abc2>222</ab></a>
至:
<a><ab><abc>111</abc><abc2>222</abc2></ab></a>
然后我写了下面的代码来做转换:
String a = "<a><ab><abc>abc<abc2>abc2</ab></a>";
a = a.replaceAll("<([^<>]+?)>([^<>]+?)<(?!/\>)", "<></><");
System.out.println(a);
但是结果不是预期的:
<a><ab><abc>111</abc><abc2>222</ab></a>
我的问题是,是否可以使用正则表达式进行转换?如果是,我的代码有什么问题?
使用下面的正则表达式
<(([^<>]+?)>)([^<>]+?)(?=<(?!))
然后用
替换匹配项<</>
https://regex101.com/r/cD1nC8/1
String s = "<a><ab><abc>111<abc2>222</ab></a>";
System.out.println(s.replaceAll("<(([^<>]+?)>)([^<>]+?)(?=<(?!\1))", "<</>"));
输出:
<a><ab><abc>111</abc><abc2>222</abc2></ab></a>