gpt4 book ai didi

java - 使用正则表达式将 SGML 转换为 XML?

转载 作者:行者123 更新时间:2023-11-30 03:36:00 32 4
gpt4 key购买 nike

我想使用 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("<([^<>]+?)>([^<>]+?)<(?!/\\$1>)", "<$1>$2</$1><");
System.out.println(a);

但是结果不是预期的:

<a><ab><abc>111</abc><abc2>222</ab></a>

我的问题,是否可以使用正则表达式进行转换?如果是,我的代码有什么问题?

最佳答案

使用下面的正则表达式

<(([^<>]+?)>)([^<>]+?)(?=<(?!\1))

然后将匹配项替换为

<$1$3</$2>

https://regex101.com/r/cD1nC8/1

String s = "<a><ab><abc>111<abc2>222</ab></a>";
System.out.println(s.replaceAll("<(([^<>]+?)>)([^<>]+?)(?=<(?!\\1))", "<$1$3</$2>"));

输出:

<a><ab><abc>111</abc><abc2>222</abc2></ab></a>

关于java - 使用正则表达式将 SGML 转换为 XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27863105/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com