我正在使用.NET的Regex
从字符串中捕获信息。我有一个用条形码字符括起来的数字模式,我想挑选出这些数字。这是我的代码:
string testStr = "|12||13||14|";
var testMatch = Regex.Match(testStr, @"^(?:\|([0-9]+)\|)+$");
但是,
testMatch.Captures
仅具有1个条目,该条目等于整个字符串。为什么它没有3个条目12
,13
和14
?我想念什么? 最佳答案
您想在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
关于c# - 为什么我没有获得所有的正则表达式捕获内容?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23394575/