C# 如何替换为Regex.replace

C# 如何替换为Regex.replace,c#,regex,replace,C#,Regex,Replace,我有一个特殊情况,我需要更换字符串 (src="cid:image001.png@01D081C1.C5908B40") 有以下几点 (src="\\resources\\images\\image001.png") 在给定的文本中使用 它应该在给定文本中出现的所有事件中替换 我试过这样做,但没有达到预期效果 fileName ="image001.png"; Regex.Replace(body, "[src=\"cid:" + fileName + "@](*)[\"]", "src

我有一个特殊情况,我需要更换字符串

(src="cid:image001.png@01D081C1.C5908B40")
有以下几点

(src="\\resources\\images\\image001.png")
在给定的文本中使用

它应该在给定文本中出现的所有事件中替换

我试过这样做,但没有达到预期效果

fileName ="image001.png"; 

Regex.Replace(body, "[src=\"cid:" + fileName + "@](*)[\"]", "src=\"\\Resources\\Email\\" + emailID + "\\" + fileName + "\"");
这很有效

    string input = "(src=\"cid:image001.png@01D081C1.C5908B40\")";
    string replacement = "src=\"\\\\resources\\\\images\\\\$1\"";
    Regex rgx = new Regex("src=\"cid:(image[0-9]+\\.png)@[A-Za-z0-9]+\\.[A-Za-z0-9]+\"");
    Console.WriteLine(rgx.Replace(input, replacement));
输出:
(src=“\\resources\\images\\image001.png”)


有几件事需要记住:

  • 使用变量初始化正则表达式模式时,请使用
    regex.Escape
    (例如,您在
    image001.png
    中有一个点,因此必须在模式中将其转义为
    image001\.png
  • 在替换字符串中使用变量时,最好添加
    .Replace(“$”,“$”)
    来替换literal
    $
    s(例如
    emailID.Replace(“$”,“$”)
  • 编写正则表达式模式时最好使用,以免使用双重转义(这有助于在联机和其他正则表达式测试工具中编写和测试rgex)
我猜不出您的
emailID
变量是什么样子的,因此,我不会在替换字符串中使用变量来获得您想要的输出

因此,我建议的代码是:

var fileName = "image001.png";
var body = "(src=\"cid:image001.png@01D081C1.C5908B40\")";
var pattern = @"(\(src="")cid:(" + Regex.Escape(fileName) + @")@.*""\)"; // will look like (\(src=")cid:(image001\.png)@.*"\)
var restt = Regex.Replace(body, pattern, @"$1\\resources\\images\\$2"")");
输出:


@ Biffin,我需要C语言。边注:请考虑使用MSDN来获取如何使用函数的初始示例。例如,显示有效的代码,这有助于理解为什么您的版本不起作用。谢谢。这对我有用。
var fileName = "image001.png";
var body = "(src=\"cid:image001.png@01D081C1.C5908B40\")";
var pattern = @"(\(src="")cid:(" + Regex.Escape(fileName) + @")@.*""\)"; // will look like (\(src=")cid:(image001\.png)@.*"\)
var restt = Regex.Replace(body, pattern, @"$1\\resources\\images\\$2"")");