.net 带反向引用的重复间断是如何工作的?

.net 带反向引用的重复间断是如何工作的?,.net,regex,.net,Regex,给定一个类似正则表达式的 (a|b){2}\1 \1指的是什么?第一次捕获,最后一次捕获,还是什么 Regex.IsMatch("aba", @"^(?:(a|b){2}\1)$") == False Regex.IsMatch("abb", @"^(?:(a|b){2}\1)$") == True 这让我怀疑它和上一次抓获的相符。这个假设我是对的吗?你猜对了。Java也做到了这一点。大多数(如果不是全部的话)正则表达式引擎存储重复组的最后捕获 有关一般说明,请参阅 有关.Net的确认信息,

给定一个类似正则表达式的

(a|b){2}\1
\1
指的是什么?第一次捕获,最后一次捕获,还是什么

Regex.IsMatch("aba", @"^(?:(a|b){2}\1)$") == False
Regex.IsMatch("abb", @"^(?:(a|b){2}\1)$") == True

这让我怀疑它和上一次抓获的相符。这个假设我是对的吗?

你猜对了。Java也做到了这一点。大多数(如果不是全部的话)正则表达式引擎存储重复组的最后捕获

有关一般说明,请参阅

有关.Net的确认信息,请参阅:

[…]当一个组进行多次捕获时,反向引用指的是最近的捕获