为什么我的正则表达式.替换字符串包含两次替换值

本文关键字:替换 包含两 字符串 正则表达式 为什么 我的 | 更新日期: 2023-09-27 18:31:28

>我有以下字符串:aWesdE ,我想使用 Regex.Replace(string, string, string, RegexOptions) 将其转换为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

因此,替换值正确显示,然后似乎再次附加 - 非常奇怪。 这是怎么回事?

为什么我的正则表达式.替换字符串包含两次替换值

您的正则表达式中实际上有 2 个匹配项。您是这样定义的匹配项:

string match = "(.*)";

这意味着匹配零个或多个字符,因此您有 2 个匹配项 - 空字符串和文本。为了修复它,将模式更改为

string match = "(.+)";

这意味着匹配一个或多个字符 - 在这种情况下,您只会获得一个匹配项