【发布时间】:2011-03-03 00:42:36
【问题描述】:
是否有正则表达式可以让我计算* 和+ 运算符匹配的重复次数?我特别想知道.NET平台下是否可以。
【问题讨论】:
标签: .net regex matching repeat capturing-group
是否有正则表达式可以让我计算* 和+ 运算符匹配的重复次数?我特别想知道.NET平台下是否可以。
【问题讨论】:
标签: .net regex matching repeat capturing-group
你很幸运,因为事实上 .NET 正则表达式就是这样做的(我认为这是非常独特的)。基本上在每个Match 中,每个Group 存储每个已生成的Captures。
因此,您可以通过以下方式计算可重复模式与输入匹配的次数:
这是一个例子:
Regex r = new Regex(@"\b(hu?a)+\b");
var text = "hahahaha that's funny but not huahuahua more like huahahahuaha";
foreach (Match m in r.Matches(text)) {
Console.WriteLine(m + " " + m.Groups[1].Captures.Count);
}
这会打印 (as seen on ideone.com):
hahahaha 4
huahuahua 3
huahahahuaha 5
要不要拿"pref ([a-z]+) suff"
然后使用组来捕获括号中的 [a-z]+ 并找到它的长度?
您也可以将此长度用于后续匹配。
【讨论】: