我有以下代码;
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”
答案 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 = "\"([^\"]*)\" \"([^\"]*)\"";
,请考虑使用另一种模式。