从逗号分隔的函数参数

时间:2016-09-01 08:28:03

标签: c# regex

我试图通过Regex从输入中获取函数名称和参数。到目前为止,我能够获取函数名称,但参数失败,因为它们以逗号分隔, 有时 具有前导空格。

(搞砸了)输入的例子:

Function001(param1, param2,param3,param4, param5);
Function002(param1,param2, param3);

使用以下正则表达式我能够获得参数,但始终使用前导空格...

((?<=\(|,).+?(?=,|\);))

param1
_param2
param3

是否有一个简单的正则表达式来获取参数但没有空格? 如果可能的话,我不想在继续进行处理之前修剪输入。

编辑以取消任何误导

鉴于上面有许多字符串:

Function001(param1, param2,param3,param4, param5);
Function002(param1,param2, param3);

现在我想要一个用于FunctionName的正则表达式(一个正常工作,因此没有Codeexample)和一个参数。 <\ n>最佳

Regex.Matches(inputString, pattern);

所以我得到任何参数并且可以处理它们。如果可能,我不想使用修剪/替换/等。因此,我希望的输出将是任何参数的匹配,但没有匹配的空格。

  

输出:
  参数1
  参数2
  参数3
  ...

参数可以是简单的字符串,但也可以是类似的字符串 Function(param = value, param2,param3, param4 = value2);

2 个答案:

答案 0 :(得分:0)

'\ s *'代表任何数字的空格。把它放在正则表达式捕获部分之外的适当位置(这看起来很奇怪 - 当你在这里发布它时,某些部分会丢失吗?)。 编辑: 它可能是(?<=\(\s|,).+?(?=,|\s\);)

答案 1 :(得分:0)

你真的需要使用正则表达式吗?

我认为这应该适合你:

var input = "Function001(param1, param2,param3,param4, param5);";

var results = input.Split("( ,);".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);

我明白了:

result