Я пишу переводчик, не как какой-либо серьезный проект, просто для удовольствия и для того, чтобы немного познакомиться с регулярными выражениями.Из приведенного ниже кода я думаю, что вы можете понять, куда я иду с этим (кто-нибудь, чизбургер?).
Я использую словарь, в котором в качестве ключей используется список регулярных выражений, а значение словаряList<string>
, который содержит дополнительный список значений замены.Если я собираюсь сделать это таким образом, чтобы понять, что заменитель, мне, очевидно, нужно знать, в чем ключ, как я могу определить, какой шаблон вызвал совпадение?
var dictionary = new Dictionary<string, List<string>>
{
{"(?!e)ight", new List<string>(){"ite"}},
{"(?!ues)tion", new List<string>(){"shun"}},
{"(?:god|allah|buddah?|diety)", new List<string>(){"ceiling cat"}},
..
}
var regex = "(" + String.Join(")|(", dictionary.Keys.ToArray()) + ")";
foreach (Match metamatch in Regex.Matches(input
, regex
, RegexOptions.IgnoreCase | RegexOptions.ExplicitCapture))
{
substitute = GetRandomReplacement(dictionary[ ????? ]);
input = input.Replace(metamatch.Value, substitute);
}
Возможно ли то, что я пытаюсь сделать, или есть лучший способ достичь этого безумия?