2

我有很多格式的文件记录

=text.GROUP1.GROUP2.GROUP_TO_RENAME.GROUP3.GROUP4.GROUP5

或者

=[text.GROUP1.GROUP2.GROUP_TO_RENAME.GROUP3.GROUP4].GROUP5

并且还以完全不同的格式记录。我需要根据它的值将 GROUP_TO_RENAME 重命名为另一个(例如 CAT -> Kitty,Mouse -> Jerry),并且不要触及某些组(例如 TOM)。

我想通过正则表达式获得两件事 - 这个 GROUP_TO_RENAME 的名称(知道是否应该更改)以及用新值替换这个 GROUP_TO_RENAME 的方法。

可能吗?

4

1 回答 1

1

这是使用字典的一种方法:

using System;
using System.Collections.Generic;
using System.IO;
using System.Text.RegularExpressions;

class Program
{
    static void Main(string[] args)
    {
        var dict = new Dictionary<string, string>();
        dict.Add("CAT", "Kitty");
        dict.Add("MOUSE", "Jerry");

        var lines = File.ReadAllText("input.txt");
        var regex = new Regex(@"(?<=(^=\[?(?:\w*?\.){3}))\w*?(?=(\.\w*?\]?){3}$?)",
            RegexOptions.Multiline |
            RegexOptions.Compiled);

        var result = regex.Replace(lines, m =>
            dict.ContainsKey(m.Value) ? dict[m.Value] : m.Value);
        Console.WriteLine(result);
    }
}
于 2013-11-05T00:12:15.323 回答