正则如何批量替换网页中的标签内容不复制

2019-01-02 20:59发布

问题:

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的斜线/分割,然后存入字典,循环替换。



标签: