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