/*--------输出--------
bb0w7w7w7w5w7
w2w3w2w3
w4w5w4w5w4w4w5w4
w4w3w4w3
w6w5w6w5w6
w4w7w7w7
*/
//第二个需求,三单元的
string str =
"w7w7w7w5w7w1w2w3w2w3w1w3w2w4w5w4w5w4w4w5w4w2w4w3w4w3w2w6w5w6w5w6w4w7w7w7w5w7";
MatchCollection mc =
Regex.Matches(str, @"(?i)(?=(w\d)\1*(w\d)(?:\1|\2)*(w\d))(?:\1|\2|\3){6,}");
foreach (Match m
in mc)
{
richTextBox2.Text += m.Value + "\n";
}
/*--------输出--------
bb0w7w7w7w5w7w1
w2w3w2w3w1w3w2
w4w5w4w5w4w4w5w4w2w4
w2w6w5w6w5w6
w4w7w7w7w5w7
*/
这个实例可以认为是环视和反向引用综合运用的一个经典实例。主要是用到了环视零宽度,不占有字符的特性,先由环视来取得规定单元的捕获组的内容,再通过反向引用来进行实际的匹配。