我在很多正则表达式引擎中发现了一些有趣的可能性:正则表达式:递归反向引用 - 用于什么?
可以在捕获组内引入反向引用并引用该组。
例如:(\1)
我的问题:什么正则表达式模式可以使用?我无法想象...
我在很多正则表达式引擎中发现了一些有趣的可能性:正则表达式:递归反向引用 - 用于什么?
可以在捕获组内引入反向引用并引用该组。
例如:(\1)
我的问题:什么正则表达式模式可以使用?我无法想象...
有一个explanation for use of nested references,我认为这清楚地表明了此功能的边际效用。
示例正则表达式,请 – ControlFlow 2010-02-04 13:04:11
如果你轻松地阅读我的问题,你会明白,我并不是在问如何正常使用反向引用,请看看我提供的示例正则表达式中有哪些反向引用。 – ControlFlow 2010-02-04 14:02:23
@ControlFlow:I don没有看到你发布任何*正则表达式,我无法想象'(\ 1)'可能匹配什么,或者对于甚至编译有用。实际的例子 – SilentGhost 2010-02-04 14:14:35
这个怎么样(忽略空格):
{ .* ({ .* \1 .* }) .* }
匹配方法的身体在C#/的Java/...
它不起作用,反向引用与捕获组1匹配的文本匹配,而不是组1中的模式本身。 – ControlFlow 2010-02-24 20:07:53
@ControlFlow:这只需要是'(?1)'而不是'\ 1',它确实会在像样的正则表达式引擎上递归。 – tchrist 2011-02-27 16:25:23
我还有很长的YAML架构,我需要/想从:
columns:
id:
type: string(36)
fixed: true
unsigned: false
primary: true
autoincrement: false
descripcion:
type: string(45)
fixed: false
unsigned: false
primary: false
notnull: true
autoincrement: false
要这样:
columns:
id: {type: string(36), fixed: true, unsigned: false, primary: true, autoincrement: false}
descripcion: {...}...
在这种情况下,我需要backrefences中的递归级别,因为列名在列描述之间。 这是适合每一行,但我不能把“{}”以防万一$ 1,我想最终每个描述域之间的括号:
"\n^ ([^\n]+)"
如果你需要找出第二次出现的指数? – SilentGhost 2010-02-04 12:40:50
SilentGhost,你应该已经发布了这个答案。 – 2010-02-04 12:48:05
@SilentGhost:我相信应该是一个答案。 – sepp2k 2010-02-04 12:48:14