正则表达式方法从txt文件中读取数据

时间:2011-09-24 19:02:02

标签: c# regex parsing text-files

我有一个dic.txt(文本)文件。该文件的内容如下:

(watyai)    w a t^ j a j^
(noi)   n @@ j^
(mai)   m a j^

我想阅读这些内容并像这样解析它们:

watyai
noi
mai

w a t^ j a j^
n @@ j^
m a j^

我怎样才能使用C#?

3 个答案:

答案 0 :(得分:1)

您可以使用正则表达式:

Regex regex = new Regex(@"^\(([^)]+)\)\s+(.+)$");

string[] lines = File.ReadAllLines(pathToFile);
foreach (string line in lines)
{
    Match match = regex.Match(line);
    if (match.Success)
    {
        string key = match.Groups[1].Value;
        string value = match.Groups[2].Value;
    }
}

答案 1 :(得分:0)

以下正则表达式将从括号中提取第一个单词,并读取其周围的所有其他内容(忽略空格)直到行尾

string[] dic_lines = File.ReadAllLines("path_to_dic_file.dic");
List<string> l_group1 = new List<string>();
List<string> l_group2 = new List<string>();

foreach(subjectString in dic_lines)
{
    Regex regexObj = new Regex(@"(\(.*?\))\s*(.*)\s*");
    Match match = regexObj.Match(subjectString);
    if (matchResults.Success) {
        l_group1.Add(match.Groups[1].Value);
        l_group2.Add(match.Groups[2].Value);
    } 
}

File.WritaAllLines("outputfile.txt", l_group1);
File.AppendAllLines("outputfile.txt", l_group2);

答案 2 :(得分:-1)

第一个RegEx:

(?<=\()\b\w+\b(?=\))

第二个RegEx:

(?<=(\(\w+\)(\s{3})))(.*)