正则表达式:递归反向引用 - 为什么?

时间:2010-02-04 12:38:21

标签: regex recursion capture backreference

我在许多正则表达式引擎中发现了一些有趣的可能性:

可以将反向引用置于捕获组内并引用该组。

例如:(\1)

我的问题:可以使用什么样的正则表达式模式?我无法想象......

3 个答案:

答案 0 :(得分:3)

有一个explanation for use of nested references,我认为这清楚地证明了此功能的边际效用。

答案 1 :(得分:1)

我有一个很长的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]+)"

答案 2 :(得分:0)

这个怎么样(忽略空格):

{ .* ( { .* \1 .* } ) .* }

匹配C#/ Java /...

中方法的主体