【问题标题】:Backreference in Regular Expression Quantifier正则表达式量词中的反向引用
【发布时间】:2009-03-25 13:01:52
【问题描述】:

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

例子:

fillerfillerCA20 abcdefghijklmnopqrst CA5 zyxwvfillerfiller

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

我打算使用反向引用来获取量词的长度:

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

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

我怎样才能做到这一点?

【问题讨论】:

  • OBTW:“空格”不需要使用 \x20。只需使用空格字符。
  • 假设您打开了“x”选项,对吗?在这个例子中,我没有打开它。

标签: c# regex


【解决方案1】:

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

您可以像已经做的那样匹配长度信息,并在第二步中使用它,同时评估匹配项。

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

【讨论】:

    【解决方案2】:

    更好地构建解析器:查找CA 的位置,读取后面的数字字符,然后按照数字值的描述读取接下来的 x 个字符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-28
      • 2018-07-13
      • 1970-01-01
      相关资源
      最近更新 更多