2013-01-01 39 views
0

我有格式的字符串正则表达式。它会输出单词列表。正则表达式匹配单词的前n OCCURENCES

谢谢

+5

如何正则表达式应该知道一个词是一个名词?有时候,这对人类来说并不明显。 –

+0

好吧,你想列出专有名词? –

+0

你甚至不知道语言是什么 – fge

回答

3

正则表达式不能用于计数。

所以不 - 你不能使用正则表达式找到前n个单词。

+0

如果强制它,它可以。当然,表演会受到严重影响。 – nhahtdh

0

你的正则表达式是(\\s|^)([a-zA-Z]+?)<Noun>(\\s|$),在每一个找到的匹配,你应该使用$2通过使用下面的代码来获得结果

在C#中,你可以做到这一点:

 string type = "Noun"; 
    int top = 5; 

    MatchCollection mc = Regex.Matches("I<Noun> like<verb> to<Function> eat<verb> an apple<Noun>", String.Format("(\\s|^)([a-zA-Z]+?)<{0}>(\\s|$)", type)); 

    List<string> res = new List<string>(); 

    for (int i = 0; i < mc.Count && i < top; i++) 
    { 
     res.Add(mc[i].Result("$2")); 
    } 
+0

正在使用'C#' –

+0

这是什么编程语言? – tripleee

+0

@ shiplu.mokadd.im oops,之前我订阅了c#,刚刚添加了regex到订阅,没有注意到,没有c#标签。但正则表达式模式应该无论如何工作 – VladL