是否有正则表达式的风格,允许我计算*和+运算符匹配的重复次数?

luv*_*ere 5 .net regex repeat matching capturing-group

是否有正则表达式的风格,允许我计算*+运算符匹配的重复次数?我特别想知道它是否可以在.NET平台下运行.

pol*_*nts 8

你很幸运,因为事实上.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);
}
Run Code Online (Sandbox Code Playgroud)

打印(如ideone.com上所示):

hahahaha 4
huahuahua 3
huahahahuaha 5
Run Code Online (Sandbox Code Playgroud)

API参考