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