Regex regexObj = new Regex(
@"([A-Za-z_][A-Za-z_0-9]*)(:)(([-+*%])?(\d*\.?\d*)?)*"
, RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace);
var subjectString = "a:123+456;b:456;";
Match matchResults = regexObj.Match(subjectString);
while (matchResults.Success) {
for (int i = 1; i < matchResults.Groups.Count; i++) {
Group grp = matchResults.Groups[i];
if (grp.Success) {
Console.WriteLine("st:" + grp.Index + ", len:" + grp.Length + ", val:" + grp.Value);
}
}
matchResults = matchResults.NextMatch();
}
ST:0,LEN:2,VAL:.A
ST:2,LEN:1,VAL ::
ST:6,LEN:0, VAL:
ST:6,LEN:0,VAL:
非常感谢。改变了一个角色,现在它可以工作。顺便说一句:当你找回长度为零的组时,我认为这只意味着该可选组没有成功匹配? – sgtz
我刚刚更新了信息和详细信息,这些信息和详细信息可能会给您(可能)更多的见解,并会在此评论中回答您的问题。 –