出现意外的Regex结果
本文关键字:Regex 结果 意外 | 更新日期: 2023-09-27 18:30:10
下面的代码段给了我意外的结果。但是,我希望得到正确的结果。
代码语法:
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('"', ' '));