首页 > 解决方案 > 正则表达式 - 匹配由引号定义并用逗号分隔的字符串

问题描述

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

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

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

这个想法是对用引号括起来定义的字符串进行分组,并对逗号进行分组。一个用例是:

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

想要的输出:

字符串组(3 个元素):

逗号组(2 个元素):

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

字符串组(5 个元素):

逗号组(0 个元素):

标签: c#regexstringmatchcomma

解决方案


你可以试试:

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

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

它还会"在拆分后从元素中修剪,因为第一个和最后一个元素会有额外的 quetes :)


推荐阅读