我在C#中有一个长字符串,其格式为\\ server \ value 我一直在使用“(?< ='\\\\)。*(?= \\)”的正则表达式模式从字符串中提取服务器。但是有一个用例,其中多个'\ server \ value'字符串可以链接在一起,如'\\ serverA \ value1'+'\\ serverB \ value2'+'\\ serverC \ value3'
我正在尝试使用MatchCollection使用模式提取所有服务器名称(?< =。\\\\)。*(> = \\)
第一个分组构造中用于说明'字符的句点。我希望结果返回3次出现,但它只返回1.我的模式出了什么问题?
string expression = "'\\\\serverA\\value1' + '\\\\serverB\\value2' + '\\\\serverC\\value3'";
string pattern = @"(?<=\\\\).*(?=\\)";
MatchCollection matches;
matches = Regex.Matches(expression, pattern);
答案 0 :(得分:1)
您可以尝试下一个模式:
@"\\\\(.*?)\\"
答案 1 :(得分:0)
如果我有,我会得到这样的结果
serverA\value1' + '\\serverB\value2' + '\\serverC
你想得到这些比赛:
serverA
serverB
serverC
您可以使用延迟量化:
(?<=\\\\).*?(?=\\)