2013-08-24 80 views
0

我想在句子How much is fish egg chicken beef ?中捕获组fish egg chicken beef。我试过正则表达式匹配句子后的单词

how much is ((?>\w+))* \\? 

但是它的唯一返回fish作为第二组。我在这里做错了什么?

+1

这实际上无法匹配。没有什么可以匹配单词之间的空格。你确定这是你正在使用的确切模式吗? –

+0

绝对。这正是我需要的。也可以有更多的话。 –

+0

你的评论并没有改变你目前的模式[不可能匹配]的事实(http://regexhero.net/tester/?id=4d265755-f302-48ba-88d7-4bc3b46656a4)。所以我想知道你是如何获得捕获“鱼”的。 –

回答

1

也许正则表达式应该是:

How much is (.*)\? 

或者,如果你想匹配在每个捕获所有的话,只有一个词:

How much is (?:(\w+)\s*)+\? 

Regex regexWords = new Regex(@"How much is (?:(\w+)\s*)+\?"); 

foreach(Capture word in regexWords.Match(input).Groups[1].Captures) 
{ 
    // word.Value contains one word. 
} 

祝你好运与你的追求。

+0

看起来就是这样的工作。 –