正则表达式仅替换字符串中最后一个出现的项

本文关键字:最后一个 替换 字符串 正则表达式 | 更新日期: 2023-09-27 18:25:05

我正在尝试替换以下HTML:中每个图像的src属性

var html = @"<img height=49 src=""Image25.gif"" width=94> or <img height=44 src=""Image26.gif"" width=117> or <img height=41 src=""Image27.gif"" width=46>";
Console.WriteLine( Regex.Replace( html,
                                  @"(<img.*src="")(.*"".*>)",
                                  m => m.Groups[1] + "/File/Download/" + m.Groups[2],
                                  RegexOptions.IgnoreCase ) );

其输出为:

<img height=49 src="Image25.gif" width=94> or <img height=44 src="Image26.gif" width=117> or <img height=41 src="/File/Download/Image27.gif" width=46>

输出应为:

<img height=49 src="/File/Download/Image25.gif" width=94> or <img height=44 src="/File/Download/Image26.gif" width=117> or <img height=41 src="/File/Download/Image27.gif" width=46>

你能用C#在一行上做多个替换吗?

正则表达式仅替换字符串中最后一个出现的项

尝试*?惰性量词:

Console.WriteLine(Regex.Replace(html,
    @"(<img.*?src="")(.*?"".*?>)",
    m => m.Groups[1] + "/File/Download/" + m.Groups[2],
    RegexOptions.IgnoreCase));