我有一个格式的字符串:
word<class> word<class>...
For example:
I<Noun> like<verb> to<Function> eat<verb>...
是否可以使用正则表达式查找每个类出现的前n个单词,例如使用正则表达式的前4个单词。它将输出单词列表。
由于
答案 0 :(得分:3)
正则表达式不能用于计数。
所以不 - 你找不到使用正则表达式的前n个单词。
答案 1 :(得分:1)
为了完成你正在做的事情,你需要使用词性标注器来分类句子中使用的单词类型。 您可以使用任何一种自然语言处理库来执行此操作。 例如。在python你有pynltk。 http://answers.oreilly.com/topic/1091-how-to-use-an-nltk-part-of-speech-tagger/
之后,您需要根据词性对单词进行分组并对其进行计数。 所以完全超出了正则表达式的范围。
答案 2 :(得分: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"));
}