出现意外的Regex结果



下面的代码段给了我意外的结果。但是,我希望得到正确的结果。

代码语法:

string parametersText="\"parameter1\",\"parametr2\","parameter3\";

    string findPattern = "(?<=").*?(?="(, |$))";
    MatchCollection mc = Regex.Matches(parametersText, findPattern);

结果:

parameter1
, "parameter2
, "parameter3

但我想得到如下:

parameter1
parameter2
parameter3

我该如何解决这个问题?

任何帮助都将不胜感激。

查找不消耗字符,因此,它在下一个"上开始匹配,并在下一次"(, |$)上特定结束。

尝试在查找表中添加(, |$)

(?<=(?:, |^)").*?(?="(?:, |$))

顺便说一句,我把捕获组转换成了非捕获组。

视频演示

.*贪婪,并且将匹配尽可能多的字符,从而在可能的情况下包括, "。您可以在这里阅读主题:C#Regex 中的贪婪、非贪婪、所有贪婪匹配

不使用Regex?

string parametersText = ""parameter1", "parameter2", "parameter3"";
parametersText.Split(',').Select(a => a.Replace(""", "").Trim());

或根据的建议

parametersText.Split(new[] { ", " }, StringSplitOptions.RemoveEmptyEntries).Select(a => a.Trim('"', ' '));

相关内容

  • 没有找到相关文章

最新更新