在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/

10-13 08:22