0

我正在使用一个我们只允许我使用正则表达式的外部 API,我想解析来自 xml 标签的内容<name>alwin</name>,我曾经<.*?>.*?<.*/>解析“alwin”.. 它不起作用,但现在它的结构像<name><![CDATA[<table>alwin</table>]]</name>我想要的那样也能够解析 CDATA .. 我也想提取[![CDATA[<table>alwin</table]]。也只是“alwin”。

4

1 回答 1

0

尝试使用此模式:

<([a-zA-Z]+).*?>(.*?)</\1>

\1子句针对模式的第一个匹配组,即([a-zA-Z]+). 因此,匹配的结束标签将始终与开始标签相同。

然后标签的内容将在第二组中可用:

Pattern p = Pattern.compile("<([a-zA-Z]+).*?>(.*?)</\\1>");
Matcher m = p.matcher("<name><![CDATA[<table>alwin</table>]]</name>");
while (m.find()) {
    System.out.println(m.group(2));
}

上面的代码段打印:

<![CDATA[<table>alwin</table>]]

重复上述输出的模式以获得alwin零件。

于 2013-04-11T07:42:26.147 回答