C#正则表达式提取方法和参数名称
我需要关于regex的帮助,在这里我传递这种字符串:C#正则表达式提取方法和参数名称,c#,regex,C#,Regex,我需要关于regex的帮助,在这里我传递这种字符串: "MethodName(int? Property1, string Property2, List<int?> Property3)" 我试过这个: 还有这个 但无法得到我需要的结果您可以这样做: ["MethodName","Property1","Property2","Property3"] ^(\w+)\((((.*)(\s)(.*)),((.*)(\s)(.*)),((.*)(\s)(.*)))\) 记住你有
"MethodName(int? Property1, string Property2, List<int?> Property3)"
我试过这个:
还有这个
但无法得到我需要的结果您可以这样做:
["MethodName","Property1","Property2","Property3"]
^(\w+)\((((.*)(\s)(.*)),((.*)(\s)(.*)),((.*)(\s)(.*)))\)
记住你有多个小组
这取决于您找到一种方法来简化这个正则表达式,以捕获变量参数,而不仅仅是三个
正如下面用户所建议的,这是正确且更简单的正则表达式:
\b\w+(?=\s*[,()])
这里是一个演示:您可以使用更简单的正则表达式来实现这一点。使用这个正则表达式,它确保只匹配方法名或变量名,方法是使用look-ahead查看下面的可选空格和
(
或,
或)
我更新了我的问题,我尝试了使用您提供的第二个正则表达式,效果很好。只需在每个
,
上拆分第二个组,然后在空格上再次拆分它们,并保留最后一部分以获取属性名称。谢谢,它起到了作用,但如果我使用无参数的方法字符串,如“MethodName()”,则会失败。你能告诉我对这两种情况都有效的修改吗?@MichaelSamteladze正如PushpeshKumarRajwanshi所建议的这是正确且更简单的正则表达式:\b\w+(?=\s*[,())
\b\w+(?=\s*[,()])