Regex.Match组包含完整字符串,如何排除

时间:2018-11-01 10:25:28

标签: c# regex

我有以下代码;

var pattern = "(\".*\") (\".*\")";
var regex = Regex.Match(input, pattern);

输入值与此类似;

“字符串part1”“字符串part2”

正则表达式组包括以下

groups[0] = "string part1" "string part2"
groups[1] = "string part1"
groups[2] = "string part2"

有没有一种方法可以排除组[0],因为我只是想串联字符串,同时删除它们之间的“”使其成为;

  

“ string part1string part2”

1 个答案:

答案 0 :(得分:2)

对组中的值使用LINQ .Skip(1)。然后,合并其余项目:

var input = "\"string part1\" \"string part2\"";
var pattern = "\"(.*)\" \"(.*)\"";
var match = Regex.Match(input, pattern);
if (match.Success) 
{
    Console.WriteLine("\"{0}\"",
        string.Join(
            " ",
            match.Groups
              .Cast<Group>()
              .Select(x=>x.Value)
              .Skip(1)
        )
    );
}

请参见C# demo online

请注意,我还将捕获组边界移到了引号内,以消除组值中的引号。

另外,如果您想匹配最引号之间的子字符串:var pattern = "\"([^\"]*)\" \"([^\"]*)\"";,请考虑使用另一种模式。