Scrivo un traduttore, non come un progetto serio, solo per divertimento e per diventare un po 'più familiare con le espressioni regolari. Dal codice qui sotto penso che tu possa capire dove sto andando con questo (cheezburger chiunque?).Determinare quale modello corrisponde con Regex.Matches
Sto utilizzando un dizionario che utilizza un elenco di espressioni regolari come le chiavi e il valore del dizionario è un List<string>
che contiene un ulteriore elenco di valori di sostituzione. Se ho intenzione di farlo in questo modo, per capire qual è il sostituto, ho ovviamente bisogno di sapere qual è la chiave, come posso capire quale schema ha scatenato la partita?
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);
}
È quello che sto tentando possibile, o c'è un modo migliore per raggiungere questa follia?
'(?! Ues) tion' questo non ha senso, poiché è lo stesso di' tion'. Forse vuoi un look negativo? '(? polygenelubricants
... e Buddha, non Buddah ... e cos'è un gatto soffitto? –
@Tim: Penso che sia un riferimento alla campagna di marketing virale che aveva un gatto che oscillava da un ventilatore a soffitto. –