我想替換我的字符串中只有標籤之間的單詞應該被替換的模式。需要替換的單詞作爲鍵和值對存在於字典中。C#使用字典替換正則表達式匹配模式
目前,這就是我想:
string input = "<a>hello</a> <b>hello world</b> <c>I like apple</c>";
string pattern = (@"(?<=>)(.)?[^<>]*(?=</)");
Regex match = new Regex(pattern, RegexOptions.IgnoreCase);
MatchCollection matches = match.Matches(input);
var dictionary1 = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
dictionary1.Add("hello", "Hi");
dictionary1.Add("world", "people");
dictionary1.Add("apple", "fruit");
string output = "";
output = match.Replace(input, replace => { return dictionary1.ContainsKey(replace.Value) ? dictionary1[replace.Value] : replace.Value; });
Console.WriteLine(output);
Console.ReadLine();
利用這一點,它取代,但只有第一個「你好」,而不是第二個。我想在標籤之間替換每個'hello'。
任何幫助將不勝感激。
我覺得你的正則表達式是匹配的標籤之間的值,所以你要更換比賽是'hello','hello world'和'我喜歡蘋果'。你是否想要匹配單個單詞?所以你的輸出應該是' hi嗨人我喜歡水果 '? –
在XML上使用正則表達式通常被認爲是一個糟糕的想法。 – Amy
是的,這正是我想要的輸出。我的正則表達式是這裏的問題嗎? –