C# · 12月 30, 2021

C#,正则表达式:如何解析逗号分隔的值,其中一些值可能引用字符串本身包含逗号

在C#中,使用正则表达式类,如何解析逗号分隔的值,其中一些值可能引用字符串本身包含逗号? using System ;using System.Text.RegularExpressions ;class Example { public static void Main ( ) { string myString = “cat,dog,\”0 = OFF,1 = ON\”,lion,tiger,’R = red,G = green,B = blue’,bear” ; Console.WriteLine ( “\nmyString is …\n\t” + myString + “\n” ) ; Regex regex = new Regex ( “(?<=,(\”|\’)).*?(?=(\”|\’),)|(^.*?(?=,))|((?<=,).*?(?=,).*?$)” ) ; Match match = regex.Match ( myString ) ; int j = 0 ; while ( match.Success ) { Console.WriteLine ( j++ + ” \t” + match ) ; match = match.Nextmatch() ; } } }

输出(部分)显示如下:

0 cat1 dog2 “0 = OFF3 1 = ON”4 lion5 tiger6 ‘R = red7 G = green8 B = blue’9 bear

但是,期望的输出是:

0 cat1 dog2 0 = OFF,1 = ON3 lion4 tiger5 R = red,B = blue6 bear解决方法 尝试使用这个正则表达式: “[^”\r\n]*”|'[^’\r\n]*’|[^,\r\n]* Regex regexObj = new Regex(@”””[^””\r\n]*””|'[^’\r\n]*’|[^,\r\n]*”); Match matchResults = regexObj.Match(input); while (matchResults.Success) { Console.WriteLine(matchResults.Value); matchResults = matchResults.Nextmatch(); }

.OUPUTS:

>猫
>狗
>“0 = OFF,1 = ON”
>狮子
老虎
>’R =红色,G =绿色,B =蓝色’
>熊

注意:这个正则表达式解决方案将适用于您的案例,但我建议您使用专门的库,如FileHelpers.