是否可以获得对以下正则表达式的嵌套后向引用:
<field(.*)name="(.*)EndTime"(.*)\n((.*)\n)*?<property name="fieldClass" value="java.lang.String"/>\n</field>
即"((.*)\n)*?"
答案 0 :(得分:1)
是的,这很有可能。请务必注意您正在使用的编号组。捕获组(以及后向引用)根据开头括号首先进行编号 - 因此,在这种情况下,外部括号将产生\1
,而内部括号将产生\2
。
例如,模式((.+)ab)\1\2
将匹配字符串1234ab1234ab1234
。第一个捕获组将匹配4个数字加上ab
,而第二个(内部)捕获组将仅匹配数字。然后我们重复每一个,产生完整的匹配。