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
- 在替换字符串中使用变量时,最好添加
来替换literal.Replace(“$”,“$”)
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"")");