日期:2014-05-17  浏览次数:20431 次

如何用正则替换img的SRC值
今天写了一个新闻内容采集,在处理新闻内容里面的图片时,出现问题。
远程新闻内容的图片地址都是src="/images/news/xxxx.jpg" 这样的格式,我现在用
Regex imgsrc = new Regex(@"(?<=src="")[^""]+", RegexOptions.None)

Regex.Replace(reContent, regImg.ToString(), "http://www.xxx.com"+ k.Value.ToString(), RegexOptions.Compiled | RegexOptions.IgnoreCase);

我的意是把新闻内容里面的图片都加上一个网址http://www.xxx.com比如有三张图片
<img src="/images/news/xxxx1.jpg" />
<img src="/images/news/xxxx2.jpg" />
<img src="/images/news/xxxx3.jpg" />,
变成
<img src="http://www.xxx.com/images/news/xxxx1.jpg" />
<img src="http://www.xxx.com/images/news/xxxx2.jpg" />
<img src="http://www.xxx.com/images/news/xxxx3.jpg" />

但使用上面我写的方法后,新闻内容里面的图片都变成同一张图片了,
如何做才是我想要的内容。

------解决方案--------------------
C# code
        string s = @"<img src=""/images/news/xxxx1.jpg"" />
<img src=""/images/news/xxxx2.jpg"" />
<img src=""/images/news/xxxx3.jpg"" />";
        string r = Regex.Replace(s, @"(?is)(?<=<img[^>]+src="").+?(?=""[^>]*/>)", "http://www.xxx.com$0");
        Response.Write(Server.HtmlEncode(r));

------解决方案--------------------
Regex imgsrc = new Regex(@"(?<=src=")(?=/)", RegexOptions.None)

Regex.Replace(reContent, regImg.ToString(), "http://www.xxx.com",RegexOptions.Compiled | RegexOptions.IgnoreCase);

------解决方案--------------------
string s = @"<IMG src=""/images/news/xxxx1.jpg"">";
s = Regex.Replace(s, @"(?is)(?<=<IMG\ssrc="").*?[^>](?=/)", "http://www.xxx.com/images");
Console.WriteLine(s);