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