使用以下正则表达式:
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/