C#,正则表达式:如何解析逗号分隔的值,其中一些值可能引用字符串
发布时间:2020-12-15 06:55:08 所属栏目:百科 来源:网络整理
导读:在C#中,使用正则表达式类,如何解析逗号分隔的值,其中一些值可能引用字符串本身包含逗号? using System ;using System.Text.RegularExpressions ;class Example { public static void Main ( ) { string myString = "cat,dog,"0 = OFF,1 = ON",lion,tiger,
在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 ...nt" + 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 cat 1 dog 2 "0 = OFF 3 1 = ON" 4 lion 5 tiger 6 'R = red 7 G = green 8 B = blue' 9 bear 但是,期望的输出是: 0 cat 1 dog 2 0 = OFF,1 = ON 3 lion 4 tiger 5 R = red,B = blue 6 bear 解决方法
尝试使用这个正则表达式:
"[^"rn]*"|'[^'rn]*'|[^,rn]* Regex regexObj = new Regex(@"""[^""rn]*""|'[^'rn]*'|[^,rn]*"); Match matchResults = regexObj.Match(input); while (matchResults.Success) { Console.WriteLine(matchResults.Value); matchResults = matchResults.NextMatch(); } .OUPUTS: >猫 注意:这个正则表达式解决方案将适用于您的案例,但我建议您使用专门的库,如FileHelpers. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |