4
我有以下字符串:aWesdE
,我想用Regex.Replace(string, string, string, RegexOptions)
爲什麼我的Regex.Replace字符串包含替換值兩次?
目前轉換爲http://myserver.com/aWesdE.jpg
,我用這個代碼:
string input = "aWesdE";
string match = "(.*)";
string replacement = "http://myserver.com/$1.jpg";
string output = Regex.Replace(input, match, replacement,
RegexOptions.IgnoreCase | RegexOptions.Singleline);
結果是輸出最終成爲:http://myserver.com/aWesdE.jpghttp://myserver.com/.jpg
因此,重置值正確顯示,然後再次出現 - 非常奇怪。這裏發生了什麼?
這是沒有道理給我。 '(。*)'只是匹配任何東西。既然它很貪婪,它就會一齊吃掉。 – 2014-11-22 19:30:58
@PatrickHofman如果使用上面的參數運行'Regex.Matches(input,match);',您會看到實際上有2個匹配項('aWesdE'和空字符串)。它們在替換時使用,這就是爲什麼使用'Replace'時會出現奇怪的結果。 – dotnetom 2014-11-22 19:37:32
你說得對。我測試你的解決方案。雖然感覺奇怪。 +1 – 2014-11-22 19:44:54