用c#编写一个regex命令来分割一个数组
本文关键字:一个 分割 数组 命令 regex | 更新日期: 2023-09-27 17:52:34
Regex是我一直希望能够自己编写的东西之一,尽管我对它的工作原理有基本的了解,但我从来没有发现自己在需要使用它的情况下,它已经在网络上广泛存在(例如验证电子邮件地址)。
我遇到的一个问题是,我正在接收一个逗号分隔的字符串,但是一些字符串值也包含逗号。例如,我可能收到:
$命令= 1、2、3,"字符串","另一个字符串",4、5、6
通常我不会收到这样的东西,但是设备发送给我这个字符串数组允许它发生,所以如果它发生了,我希望能够相应地拆分数组。
很明显,就像这样分割它(其中rawResponse
删除了$COMMAND=
部分:
string[] response = rawResponse.Split(',');
不够好!我认为正则表达式是正确的工具的工作,谁能帮我写吗?
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();
string originalString = @"1,2,3,""string"",""another,string"",4,5,6";
string regexPattern = @"(("".*?"")|(.*?))(,|$)";
foreach(Match match in Regex.Matches(originalString, regexPattern))
{
}