在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);
matches.Count结束为1,匹配[0]为“|!('d%* |”。
我期待matches.Count为3,解析后的字符串为:
matches[0] = "!("
matches[1] = "'d"
matches[2] = "%*"
我做错了什么?
查
答案 0 :(得分:1)
你的正则表达式将条形|
之间的所有内容捕获到一个匹配项中。如果您想要括号中的部分,那些部分位于match[0].Groups
。
Group[0]
是整个捕获组。第1,2组以及可选的3个或更多个将成为括号中的字符对。
在你的情况下,matches.Count将为1,匹配[0] .Groups.Count将为4,其中:
matches[0].Group[1] == "!("
matches[0].Group[2] == "'d"
matches[0].Group[3] == "%*"
答案 1 :(得分:-1)
regexPlanet是你的朋友,在那里测试你的表情。