使用以下正则表达式:

InitValue\((\w*)\)

和测试字符串:
InitValue(Input1)

我得到以下结果:
Full match: InitValue(Input1)
Group1: Input1

使用以下正则表达式:
InitValue\((\w*)\s*,\s*(\w*)\)

和测试字符串:
InitValue(Input1, Input2)

我得到:
Full match: InitValue(Input1, Input2)
Group1: Input1
Group2: Input2

现在我想为 InitValue 方法捕获任意数量的参数。 InitValue 的参数数量未知。
Full match: InitValue(Input1, Input2, ..., Inputn)
Group1: Input1
Group2: Input2
....
Groupn: Inputn

当然,我不能在正则表达式中重复以下模式,因为我事先不知道参数的数量:
\s*,\s*(\w*)

如何编写输出 n 个捕获组的正则表达式?

我在 C# 代码中使用正则表达式(Regex,Match)...

最佳答案

可以在 .NET 中执行此操作 - 您使用单个捕获 Group ,然后访问 Group 的 Captures 集合以查看它捕获的所有项目,而不仅仅是最终的 Value

您必须编写一个可以重复参数匹配组的正则表达式,例如

InitValue\((?:(\w+)\s*(?:,(?!\s*\))|(?=\s*\)))\s*)*\)

尝试使用 Debuggex Demo 使其与您想要的匹配。

关于c# - 正则表达式捕获组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54076732/

10-12 12:38
查看更多