我有一个字符串,其中包含长度为以下字段的标头。
例子:
fillerfillerCA20 abcdefghijklmnopqrst CA5 zyxwvfillerfiller
Run Code Online (Sandbox Code Playgroud)
我需要找到两个值:abcdefghijklmnopqrst 和 zyxwv
我打算使用反向引用来获取量词的长度:
(?i)ca(?<length>\d+?)\x20.{\k<length>}\x20?
Run Code Online (Sandbox Code Playgroud)
但显然,不支持在量词中使用反向引用。
我怎样才能做到这一点?
不是一步到位。正则表达式不能自引用。它们首先被构建,然后被使用。一旦构建了正则表达式,就不可能进行重建/增强。
您可以像已经做的那样匹配长度信息,并在第二步中使用它,同时评估匹配。
先发制人的评论:我知道可以将"(.)\1"同一个字符匹配两次。但这不是我所说的“自我参照”。