正则表达式匹配仅捕获一个组的重复组

时间:2015-08-04 13:53:45

标签: c# .net regex

我想匹配字符串

6 cakes 5 donuts 12 muffins
分为三组即对。 6 cakes5 donuts12 muffins。为实现这一点,我使用了正则表达式

([\d]{1}[\s]{1}[\w]*) 

但问题是它只匹配第一组6 cakes并忽略其余组。如何更改它以使组重复。

1 个答案:

答案 0 :(得分:2)

您只需获取MatchCollection Regex.Matches即可获得匹配。正则表达式可以是

\d+\s+\w+

请参阅regex demo

在C#中,

var str = "6 cakes 5 donuts 12 muffins";
var rx = new Regex(@"\d+\s+\w+");
var coll = rx.Matches(str);
foreach (Match m in coll)
    Console.WriteLine(m.Value);

请参阅IDEONE demo

您也可以使用LINQ:

var str = "6 cakes 5 donuts 12 muffins";
var rx = new Regex(@"\d+\s+\w+");
var coll = rx.Matches(str).Cast<Match>().Select(p => p.Value).ToList();

enter image description here