我正在使用.NET Regex
从字符串中捕获信息。我有一个用条形字符括起来的数字模式,我想挑出数字。这是我的代码:
string testStr = "|12||13||14|";
var testMatch = Regex.Match(testStr, @"^(?:\|([0-9]+)\|)+$");
但是,testMatch.Captures
只有1个条目,它等于整个字符串。为什么它没有3个条目,12
,13
和14
?我错过了什么?
答案 0 :(得分:5)
您想使用Captures
本身的Group
属性 - 在本例中为testMatch.Groups[1]
。这是必需的,因为正则表达式中可能有多个捕获组,并且它无法知道您指的是哪一个。
有效使用testMatch.Captures
可获得testMatch.Groups[0].Captures
。
This works对我来说:
string testStr = "|12||13||14|";
var testMatch = Regex.Match(testStr, @"^(?:\|([0-9]+)\|)+$");
int captureCtr = 0;
foreach (Capture capture in testMatch.Groups[1].Captures)
{
Console.WriteLine("Capture {0}: {1}", captureCtr++, capture.Value);
}
Group.Captures