c#正则表达式匹配/替换大文本文件

本文关键字:文本 文件 替换 正则表达式 | 更新日期: 2023-09-27 18:05:51

我有一个大的文本文件(可达+500MB),我需要替换在特定字符串中出现的日期的所有出现。我正在使用正则表达式来匹配日期,这很好。我需要捕获行号、匹配项和匹配项所在的整行。我的那部分还在工作,我在纠结的是替换的部分。理想情况下,我想使匹配,捕获额外的信息,并通过文件做一个行程的替换。我怎样才能有效地做到这一点?这是我用来执行正则表达式的。

while ((line = InputFile.ReadLine()) != null)
{
    // Increment for each line read
    x++;
    // Try to match each line against the Regex.
    Match m = reg.Match(line);                    
    if (m.Success) 
    {
        DateTime result;
        if (!(DateTime.TryParse(m.Groups[0].Value, out result)))
        {
            // add it to the DT
            MatchTable.Rows.Add(x, m.Groups[0].Value, line);   
        }
        else if (DateTime.Parse(m.Groups[0].Value).Year <= 1753) // 1753 is the earliest date that can be stored in SQL datetime
        {
            // add it to the DT                       
            MatchTable.Rows.Add(x, m.Groups[0].Value, line);
        }
    }
}

c#正则表达式匹配/替换大文本文件

我想我可能会按修改行构建第二个临时文件行,然后删除旧文件并在完成后重命名新文件。