我想匹配字符串
6 cakes 5 donuts 12 muffins
分为三组即对。 6 cakes
,5 donuts
,12 muffins
。为实现这一点,我使用了正则表达式
([\d]{1}[\s]{1}[\w]*)
但问题是它只匹配第一组6 cakes
并忽略其余组。如何更改它以使组重复。
答案 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();