C# 名词、动词、形容词等的单独词表

C# 名词、动词、形容词等的单独词表,c#,regex,parsing,dictionary,C#,Regex,Parsing,Dictionary,我试图解析一行并提取在中找到的单词 但我不知道怎么做。例如,index.adj文件包含以下行: abactinal a 1 1 ! 1 0 01665972 abandoned a 2 1 & 2 1 01313004 01317231 abashed a 1 1 & 1 1 00531628 abasic a 1 2 \ + 1 0 02598608 abatable a 1 2 & + 1 0 02288022 abatic a 1 2 \ + 1 0

我试图解析一行并提取在中找到的单词 但我不知道怎么做。例如,index.adj文件包含以下行:

abactinal a 1 1 ! 1 0 01665972
abandoned a 2 1 & 2 1 01313004 01317231  
abashed a 1 1 & 1 1 00531628  
abasic a 1 2 \ + 1 0 02598608  
abatable a 1 2 & + 1 0 02288022  
abatic a 1 2 \ + 1 0 02598608  
abaxial a 1 2 ! ; 1 0 00002312  
abbatial a 1 2 \ + 1 0 02598768  
abbreviated a 2 1 & 2 1 01436432 01442597  
abdicable a 1 2 & + 1 0 02528048  
abdominal a 1 2 \ + 1 1 02934594  
abdominous a 1 2 & + 1 0 00986457 
我正在使用.NET和C#,我尝试过:

Regex regex = new Regex(@"/^(\S+?)[\s%]/");
Match match = regex.Match(line);

我正在寻找字典数据库创建一个数据挖掘工具

此任务不需要正则表达式,因为此输入是简单(白色)空格分隔文本。使用此代码:

var txt5 = "abactinal a 1 1 ! 1 0 01665972\r\nabandoned a 2 1 & 2 1 01313004 01317231\r\nabandon v 2 1 & 2 1 01313004 01317231  ";
var dic = new List<KeyValuePair<string, string>>();
var lines = txt5.Split(new string[] {"\r\n"}, StringSplitOptions.RemoveEmptyEntries);
foreach (var line in lines)
{
     var cells = line.Split();
     switch (cells[1])
     { 
        case "a":
          dic.Add(new KeyValuePair<string, string>("adjective", cells[0]));
          break;
        case "v":
          dic.Add(new KeyValuePair<string, string>("verb", cells[0]));
          break;
        // Add more to cover all POS values
        default:
          break;
      }
 }
var txt5=“abactinal a 1 1!1 0 01665972\r\n与2 1和2 1 01313004 01317231\r\n与v 2 1和2 1 01313004 01317231有关”;
var dic=新列表();
var lines=txt5.Split(新字符串[]{“\r\n”},StringSplitOptions.RemoveEmptyEntries);
foreach(行中的var行)
{
var cells=line.Split();
开关(单元[1])
{ 
案例“a”:
添加(新的KeyValuePair(“形容词”,单元格[0]);
打破
案例“v”:
添加(新的KeyValuePair(“动词”,单元格[0]);
打破
//添加更多以覆盖所有POS值
违约:
打破
}
}
您可以调整它并进一步工作

输出:


您到底想在该字符串中匹配什么?您拥有的正则表达式是JavaScript样式的正则表达式,在C#中无法正常工作。如果您打算只匹配单词,我会使用
@“\b\p{L}+\b”
regex,并使用
RegexMatches
返回字符串中的单词集合。很抱歉,我从文件中发布了错误的文本,可以为我现在添加的行找到正则表达式。有些单词还包含uo这看起来像是以空格分隔的列表。你为什么需要正则表达式?