在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 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
解决方法
尝试使用这个正则表达式:
"[^"\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.
原文地址:https://www.jb51.cc/csharp/94215.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。