2013-03-07 44 views
3
(?:\/(\w+?=\/)\/(\w+))* 

有没有什么办法从组内检索反向引用?在上面的表达式中,没有引用(?:)会阻止整个组捕获反向引用?从重复组生成反向引用

试图匹配,例如: /hello/how/are/you.../today和捕捉

+0

'\ w'不一定被'['']'包围“。我很肯定在'?='之前应该有一个左括号'(经过适当的修改)。 – Dukeling 2013-03-07 21:02:50

+0

我添加\ w只是为了更容易阅读。编辑,以便更容易阅读thx – 2013-03-07 21:04:24

+0

最快的解决方案是加倍'/' – BlackBear 2013-03-07 21:14:28

回答

2

之间的“/”的所有值是否有任何办法从组内反向引用?

是的。组不在层次结构中解释。例如(a(b))只有两个组,一个和两个,可以(后面)引用。在参考文献方面,它等于(a)(b)。引用的顺序只是由正则表达式模式中的组顺序决定的(由组的开始决定)。一个团体是另一个团体的一部分并不能改变这一事实。

在上面的表达式中,no-reference(?:)是否阻止整个组捕获反向引用?

不。它只能防止标记为非捕获组的组捕获(返回)引用。嵌套组不受影响,将被捕获,除非它们也被标记为非捕获组。

+0

那么它只花了我几个月的时间来标记这个但是为了答案。正则表达式的例子往往很弱,所以每当我遇到一些复杂的测试或stackoverflow复杂的。 – 2013-06-13 13:50:33

+0

非常感谢标记:) – 2013-06-14 14:28:50