【发布时间】:2017-04-19 10:18:27
【问题描述】:
您好,我正在尝试阅读单词列表上的标签,该列表中的单词如 (TMConnects(MEN) what(WP) occurred(VB) to(TO) your(ADV) my(ADV) tm(N) website(N) i(N) can(ADV) access(N) to(TO) view(N) my(ADV) bills(N) ) 我正在尝试使用 if 语句和正则表达式来读取每个标签,这样我就可以适当地对单词进行分类。
这是我试过的代码
foreach (string word in tokensList)
{
//Verbs
Match match_verb = Regex.Match(word, @"[a-zA-Z]+\(vb\)");
if (match_verb.Success)
{
Console.WriteLine(word + "v");
Verbs.Add(word);
}
else
{
//Nouns
Match match_noun = Regex.Match(word, @"[a-zA-Z]+\(n\)");
if (match_noun.Success)
{
Console.WriteLine(word + "n");
Nouns.Add(word);
}
else
{
//Adverb(Ad)
Match match_adverb = Regex.Match(word, @"[a-zA-Z]+\(adv\)");
if (match_adverb.Success)
{
Console.WriteLine(word + "adv");
Adverbs.Add(word);
}
else
{
//Adjective(Adj)
Match match_adj = Regex.Match(word, @"[a-zA-Z]+\(adj\)");
if (match_adj.Success)
{
Console.WriteLine(word + "adj");
Adjectives.Add(word);
}
else
{
//Mention(Men)
Match match_men = Regex.Match(word, @"[a-zA-Z]+\(men\)");
if (match_men.Success)
{
Console.WriteLine(word + "men");
Mentions.Add(word);
}
else
{
//Object(KNK)
Match match_obj = Regex.Match(word, @"[a-zA-Z]+\(knk\)");
if (match_obj.Success)
{
Console.WriteLine(word + "obj");
Objects.Add(word);
}
else
{
//Features(KT)
Match match_feature = Regex.Match(word, @"[a-zA-Z]+\(kt\)");
if (match_feature.Success)
{
Console.WriteLine(word + "ft");
Features.Add(word);
}
else
{
//break;
}
}
}
}
}
}
请帮帮我。
【问题讨论】:
-
您期待什么帮助?我可以建议的一件事是输入
word一次只能属于一个类别,但不能超过一个。因此,您可以使用if-else循环而不是嵌套的if-else循环, -
帮你什么?你没有告诉我们什么是行不通的。标签是大写的,就像你的例子一样?正则表达式默认区分大小写(没有
RegexOptions.IgnoreCase)。似乎用一个正则表达式来提取单词和标签,然后打开标签会更干净,或者有一个字典,标签作为键,列表作为值? -
我正在尝试阅读单词上的标签,然后对单词进行分类,但问题似乎是某些 if 语句被简单地忽略了。例如,对于我上面给出的单词列表,它应该找到它们并打印出来,但它只找到( my(adv)adv website(n) can(adv) my(adv)