我正在寫一個翻譯器,而不是任何嚴肅的項目,只是爲了好玩並且變得對正則表達式更熟悉一些。從下面的代碼我想你可以找出我要去哪裏(cheezburger任何人?)。確定使用Regex.Matches匹配哪種模式
我使用的字典使用正則表達式列表作爲鍵,字典值是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);
}
是我試圖實現的,還是有更好的方法來實現這種瘋狂?
'(?!ues)tion'這是沒有意義的,因爲這與'tion'一樣。也許你想要負面的後顧之憂? '(?<!UE)的tion'?此外,「神」,而不是「虔誠」。 – polygenelubricants 2010-06-24 16:54:41
......和佛,不是佛......什麼是天花貓? – 2010-06-24 19:23:32
@Tim:我認爲這是對病毒營銷活動的一個參考,它讓一隻貓擺脫了吊扇。 – 2010-06-25 12:44:03