1
我遇到命名捕获组的问题并重新使用它们。看起来像我命名捕获组A时,它首先捕获类似“asd”的东西,然后使用\ k并尝试再次使用捕获组A的表达式,但它不起作用,因为它不匹配正则表达式I originaly在A组中写道,但是它试图匹配先前匹配的内容,即“asd”。正则表达式:再次使用捕获组
所以,如果我有这样的:
^(?<A>(?:a|s|d))\k<A>$
我键入:
aa
这工作,因为捕获组的第一个匹配的字母和\k<A>
现在也在寻找一个。
但是,在as
中键入不起作用,因为第一个匹配a和\k<A>
正在寻找另一个a。
我想要做的是再次使用捕获组A的正则表达式本身。所以我想\k<A>
= (?:a|s|d)
。
这里有什么问题,有没有办法解决它?
谢谢!
您正在寻找[递归](http://www.regular-expressions.info/recurse.html)。不幸的是,这不是一个广泛支持的功能。我不认为posix-ere支持它。 –
@Rawing是的,这工作。我使用\ g'name'来代替,但是我的实际正则表达式还存在其他一些问题,但现在一切正在运行。提交这个答案作为答案,我会给你的观点。 – Piwwoli
如果您可以使用'\ g'name'',posix-ere标签在这里是错误的。什么是环境? PHP?红宝石? –