是否有正则表达式风格可以让我计算与 *+ 运营商?我特别想知道在 .NET 平台下是否可以。

有帮助吗?

解决方案

你很幸运,因为事实上 .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);
}

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

hahahaha 4
huahuahua 3
huahahahuaha 5

API参考

其他提示

您可以在表达式中使用括号来创建一个组,然后使用 + 或者 * 组中的操作员。这 Captures 的财产 Group 可用于确定匹配的次数。以下示例计算字符串开头的连续小写字母的数量:

var regex = new Regex(@"^([a-z])+");
var match = regex.Match("abc def");

if (match.Success)
{
    Console.WriteLine(match.Groups[1].Captures.Count);
}

如何关于采取"pref ([a-z]+) suff"

然后使用组来捕获该[A-Z] +在支架和发现其长度?

可以使用该长度用于后续匹配也是如此。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top