一尘不染

正则表达式以空格分隔,除非用引号引起来

c#

我想使用.Net Regex.Split方法将输入字符串拆分成一个数组。 除非用引号引起来,否则必须在空格上分割。

输入:这是“我的字符串”,有“六个匹配项”

预期产量:

  1. 这里
  2. 我的弦
  3. 六场比赛

我需要什么模式?我还需要指定任何RegexOptions吗?


阅读 470

收藏
2020-05-19

共1个答案

一尘不染

无需选项

正则表达式:

\w+|"[\w\s]*"

C#:

Regex regex = new Regex(@"\w+|""[\w\s]*""");

或者,如果您需要排除“”字符,请执行以下操作:

    Regex
        .Matches(input, @"(?<match>\w+)|\""(?<match>[\w\s]*)""")
        .Cast<Match>()
        .Select(m => m.Groups["match"].Value)
        .ToList()
        .ForEach(s => Console.WriteLine(s));
2020-05-19