我在文件格式中有很多记录
=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)。
我想通过正则表达式获取2件事 - 此GROUP_TO_RENAME的名称(知道是否应该更改)以及用新值替换此GROUP_TO_RENAME的方法。
有可能吗?
答案 0 :(得分: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);
}
}