苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 6152|回复: 7

[其他] 正则批量替换网页中的标签内容

[复制链接]
发表于 2018-11-18 22:48:47 | 显示全部楼层 |阅读模式
c# 批量替换源码中的图片地址,后面的文件名不变只替换前面的 http 到 图片名前面的 / 这个正则怎么写,

原始代码如下:

<img src=https://www.baidu.com/wp-content/uploads/2017/03/MAMP-PRO.png alt="alt内容" /><span class="entry-meta">

<img src=https://baidu.com/wp-content/uploads/2017/03/Twixl-Publisher.png alt="alt内容" /></a>

我要把 src=xxxx 的替换掉 然后 /MAMP-PRO.png 以后的内容保持不变,
也就是批量替换中间的这一串,https://www.baidu.com/wp-content/uploads/2017/03  后面的图片名有上百个,每个都不同,这个正则该怎么写,
或者有什么其它方法进行替换。




1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2018-11-19 09:55:26 | 显示全部楼层
 楼主| 发表于 2018-11-19 12:20:44 | 显示全部楼层
sufeinet 发表于 2018-11-19 09:55
https://www.baidu.com/wp-content/uploads/[0-9]{4}/[0-9]{2}/

图片的地址不是这种固定格式的,我是要把网页所有的图片地址都匹配出来 图片文件名不变,但是前面的图片地址是各有不同,有长有短,有字母数字 / 后的层次也是不同,需要替换的只是图片名前面的地址,
发表于 2018-11-19 12:35:33 | 显示全部楼层
你测试了吗,这个肯定是对的,以你上面的网址为例子 是对的,你用在你的项目上,你就得提供你项目的链接,不同的链接要有不同的格式来匹配,你用百度的,你是百度员吗?要替换百度的,这个你们公司自己不应该连这个都不会写的吧,这可是百度啊大牛一大把
 楼主| 发表于 2018-11-19 14:02:29 | 显示全部楼层
sufeinet 发表于 2018-11-19 12:35
你测试了吗,这个肯定是对的,以你上面的网址为例子 是对的,你用在你的项目上,你就得提供你项目的链接, ...

我知道你这种方式是对的,只是跟我想的不一样,不知道是不是我表达的不清楚,你看我拿你这论坛的源码,匹配到的结果是这样的
2.png

替换也是正确了,只是后面结果出了问题,所有的图片成了一个结果,就像下面这个结果一样,
3.png

这是代码:
[C#] 纯文本查看 复制代码
private void button1_Click(object sender, EventArgs e)
        {
            string html = richTextBox1.Text;
            string temp = "";
            string rule= "(?<=<img src=\").*?(?=\")";

            Regex reg = new Regex(rule);
            MatchCollection coll = reg.Matches(richTextBox1.Text);

            foreach (Match item in coll)
            {
                string code = item.Value;
                temp = item.Value;

                temp = code.Substring(code.LastIndexOf("/")).Replace("/", string.Empty);
                string path = "www.baidu.com/images/";
                richTextBox2.Text = Regex.Replace(html, rule, path+temp);
            }
        }

发表于 2018-11-19 19:55:43 | 显示全部楼层
替换的时候只替换第一个()内的内容,你这样写相当于是替换全部了,当然就变成一样了。
发表于 2018-11-19 20:28:15 | 显示全部楼层
楼主加油,我们都看好你哦。
发表于 2018-11-21 17:08:21 | 显示全部楼层
我只是路过打酱油的。
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-26 03:17

© 2014-2021

快速回复 返回顶部 返回列表