c# - 字符串中多个数字的正则表达式命名捕获

标签 c# regex

给定一个字符串

 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 值,分别代表 1234987。 p>

您还可以将断言用作:

Assert.AreEqual(matches.Count, 2);

希望对您有所帮助!

关于c# - 字符串中多个数字的正则表达式命名捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7073177/

相关文章:

c# - 为什么我会收到此错误 :"Cross-thread operation not valid: Control lbFolders accessed from a thread other than the thread it was created on."?

javascript - 如何使这个 json 正则表达式变得贪婪

mysql - 删除MySQL数据库中的宽度高度属性值

javascript - 正则表达式仅在 Javascript 中没有跟随或以字母开头时才匹配数字

c# - 调用Web服务对象的方法

c# - xamarin 表单错误 Droid.Resource 不包含字符串的定义

python-3.x - 仅当引号包含 3 个或更多字符时才拆分

javascript - 删除字符串中第 4 个空格后的所有字符

c# - 调试器进入条件为假的 if() block

c# - 为什么 DateTime 没有内置类型?