代码之家  ›  专栏  ›  技术社区  ›  Matt Ruwe

正则表达式量词中的后向引用

  •  1
  • Matt Ruwe  · 技术社区  · 17 年前

    我有一个字符串,其中包含一个具有以下字段长度的标题。

    例子:

    fillerfillerCA20 abcdefghijklmnopqrst CA5 zyxwvfillerfiller
    

    我需要找到这两个值: abcdefghijklmnopqrst 和 ZYXWV

    我打算用后向引用来得到量词的长度:

    (?i)ca(?<length>\d+?)\x20.{\k<length>}\x20?
    

    但显然,不支持在量词中使用后向引用。

    我怎样才能做到这一点?

    2 回复  |  直到 17 年前
        1
  •  3
  •   Tomalak    17 年前

    一步也不行。正则表达式不能是自引用的。它们先被建造,然后被使用。一旦构建regex,就不可能重新构建/扩充。

    您可以像以前那样匹配长度信息,并在第二步中使用它,同时评估匹配情况。

    先发制人的评论:我知道一个人可以做到 "(.)\1" 两次匹配同一个字符。不过,这不是我所说的“自我参照”。

        2
  •  0
  •   Gumbo    17 年前

    更好地构建一个解析器:查找 CA ,读取以下数字字符,然后读取下一个 X 数字值所描述的字符。