0

正则表达式是我希望能够自己编写的东西之一,虽然我对它的工作原理有基本的了解,但我从来没有发现自己处于需要使用它的情况下,它还没有广泛存在在网络上(例如用于验证电子邮件地址)。

我遇到的一个问题是我收到了一个逗号分隔的字符串,但是一些字符串值也包含逗号。例如,我可能会收到:

$COMMAND=1,2,3,"string","another,string",4,5,6

一般来说,我永远不会收到这样的东西,但是向我发送这个字符串数组的设备允许它发生,所以我希望能够在它发生时相应地拆分数组。

所以显然只是像这样拆分它(部分删除rawResponse的地方:$COMMAND=

string[] response = rawResponse.Split(',');

还不够好!我认为正则表达式是完成这项工作的正确工具,有人可以帮我写吗?

4

2 回答 2

5
string rawResponse = @"1,2,3,""string"",""another,string"",4,5";
string pattern = @"[^,""]+|""([^""]*)""";
foreach(Match match in  Regex.Matches(rawResponse, pattern))
       // use match.Value

结果:

1
2
3
"string"
"another,string"
4
5

如果您需要将响应作为字符串数组,您可以使用 Linq:

var response = Regex.Matches(rawResponse, pattern).Cast<Match>()
                    .Select(m => m.Value).ToArray();
于 2013-01-13T15:57:12.487 回答
0
string originalString = @"1,2,3,""string"",""another,string"",4,5,6";
string regexPattern = @"(("".*?"")|(.*?))(,|$)";
foreach(Match match in  Regex.Matches(originalString, regexPattern))
{

}
于 2013-01-13T16:14:49.423 回答