问题:
c# 批量替换源码中的图片地址,后面的文件名不变只替换前面的 http 到 图片名前面的 / 这个正则怎么写,
原始代码如下:
<img src=https://www.abc.com/wp-content/uploads/2017/03/MAMP-PRO.png alt="alt内容" /><span class="entry-meta">
<img src=https://efg.com/wp-content/uploads/2017/03/Twixl-Publisher.png alt="alt内容" /></a>
我要把 src=xxxx 的替换掉 然后 /MAMP-PRO.png 以后的内容保持不变,
也就是批量替换中间的这一串,https://www.abc.com/wp-content/uploads/2017/03 后面的图片名有上百个,每个都不同,这个正则该怎么写,
使用下面这句虽可以替换,但是正则写的有问题,导致所有的图片变成了一个结果,小弟正则不精,麻烦各路高手帮忙解决下,或者有什么其它方法进行替换。
Regex.Replace(richTextBox1.Text, "(?<=<img src=)[\s\S]*?(?= alt)", "www.aaa.com");
回答1:
var repacedHtml = System.Text.RegularExpressions.Regex.Replace(html, @"(?<=<img\s+?src=).+?(?=\s)", m =>
{
var src = m.Value.TrimStart('"').TrimEnd('"');
var fileName = System.IO.Path.GetFileName(src);
return string.Format(""/{0}"", fileName);
});
自己慢慢体会吧,(sb cnblogs回复代码自动被修改有BUG)
回答2:
将图片存到数组中,用for或foreach循环取数组中的数据
正则表达式生成工具
回答3:
回答4:
源数据:
https://www.abc.com/wp-content/uploads/2017/03/MAMP-PRO.png
https://efg.com/wp-content/uploads/2017/03/Twixl-Publisher.png
http://efg.com/wp-content/uploads/2017/03/Twixl-Publisher.png
正则:https?://.*/
匹配结果:
共找到 3 处匹配:
https://www.abc.com/wp-content/uploads/2017/03/
https://efg.com/wp-content/uploads/2017/03/
http://efg.com/wp-content/uploads/2017/03/
====================
楼主也可以直接获取src的全部值,然后用last的斜线/分割,然后存入字典,循环替换。