给定一个字符串
var testData = "1234 test string 987 more test";
我希望能够使用正则表达式提取 1234 和 987。据我所知,使用
var reg = new Regex(@"?<numbers>\d+");
应该做我想做的,但是当我说的时候
var match = reg.match(testData);
我认为
Assert.AreEqual(match.Groups["numbers"].Captures.Count(), 2);
但它只有 1。我做错了什么?直觉告诉我,
?<group>
表示这些值中只能有 0 个或 1 个。我不应该使用命名组吗?
*<group>
似乎在 visual studio 的正则表达式构建器中不起作用,但我没有在我的测试中尝试过。
最佳答案
为什么不使用下面的模式字符串:
Regex reg = new Regex(@"\d+");
然后通过以下方式获取数字:
MatchCollection matches = reg.Matches(testData);
之后,matches
变量包含 2 个 Match 值,分别代表 1234 和 987。 p>
您还可以将断言用作:
Assert.AreEqual(matches.Count, 2);
希望对您有所帮助!
关于c# - 字符串中多个数字的正则表达式命名捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7073177/