有没有一种正则表达式风格可以让我计算*
和+
运算符匹配的重复次数?我特别想知道在.NET平台下是否可能。
有没有一种正则表达式风格可以让我计算*
和+
运算符匹配的重复次数?我特别想知道在.NET平台下是否可能。
你很幸运,因为事实上.NET正则表达式可以做到这一点(我认为这相当独特)。在每次匹配中,每个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);
}
这会打印出 (如同在ideone.com上看到的):
hahahaha 4
huahuahua 3
huahahahuaha 5
试试使用 "pref ([a-z]+) suff"
然后使用分组来捕获括号中的 [a-z]+ 并找到它的长度?
您还可以将此长度用于后续匹配。