簡體   English   中英

使用正則表達式將SGML轉換為XML?

[英]Convert SGML to XML with regex?

我想使用regrex將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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM