在C#和VS 2010中使用正则表达式。这是代码。
static string capturePattern = @"\|([!-|]{2})([!-|]{2})([!-|]{2})?([!-|]{2})?([!-|]{2})?([!-|]{2})?([!-|]{2})?\|";
Regex rgx = new Regex(capturePattern);
string TS="!3829.87N/12033.82Wv169/000|!('d%*|"
MatchCollection matches = rgx.Matches(TS);
match.Count最终为1,matches [0]为“ |!('d%* |”。
我期望matches.Count为3,而解析的字符串为:
matches[0] = "!("
matches[1] = "'d"
matches[2] = "%*"
我做错什么了?
卡盘
最佳答案
您的正则表达式将两个|
条之间的所有内容捕获为一个匹配项。如果要用括号括起来的部分,则在match[0].Groups
中。Group[0]
是整个捕获组。第1、2和3组以及更多的组将成为括号中的字符对。
在您的情况下,matches.Count将为1,matches [0] .Groups.Count将为4,其中:
matches[0].Group[1] == "!("
matches[0].Group[2] == "'d"
matches[0].Group[3] == "%*"
关于c# - 我期望3场比赛只有一场,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12414735/