正则表达式-匹配用引号定义并用逗号分隔的字符串

时间:2019-10-15 16:36:17

标签: c# regex string match comma

我需要帮助来设置可将某些字符串与某些逗号分隔的正则表达式。

这是我到目前为止拥有的正则表达式:

(?<string>(?<=")(?:[^""\\]|\\.)*(?="))|(?<comma>\,)

这个想法是将通过用引号引起来的字符串进行分组以及逗号的分组。一个用例是:

"Dog", "cat", "Dog, cat"

所需的输出:

字符串组(3个元素):

  • 狗,猫

逗号组(2个元素):

问题是我的正则表达式模式也将逗号作为字符串读取,因为它用引号引起来,所以我的输出是:

字符串组(5个元素):

  • 狗,猫

逗号组(0个元素):

2 个答案:

答案 0 :(得分:0)

您可以尝试:

var testString = "\"Dog\", \"cat\", \"Dog, cat\"";
var splitted = Regex.Split(testString, @"""\s*,\s*""");.Select(s => s.Trim('"'));

使用的模式:"\s*,\s*",以逗号分隔,仅在引号之间:", ",中间也可以有空格。

它还会在拆分后从元素中修剪",因为第一个元素和最后一个元素将具有附加的格纹:)

答案 1 :(得分:-1)

您应该完全忽略逗号,而只将引号内的非引号字符隔离开。进行比赛。接下来直到比赛失败,您应该全部获得比赛。