如下语句:
<img src="http://8.zol-img.com.cn/bbs/user_photo/1360/100/1359014_100.jpg" alt="Babybear007" id="headpic_area_1" onmouseover="APP.showList('headpic_area_1','headpic_body_1');" onerror="this.src='http://icon.zol-img.com.cn/group/default_zoler/zoler_100.jpg'"/> 我用正则表达式:
"(http://*[^>]*.jpg)"
来匹配,结果总是
http://8.zol-img.com.cn/bbs/user_photo/1360/100/1359014_100.jpg" alt="Babybear007" id="headpic_area_1" onmouseover="APP.showList('headpic_area_1','headpic_body_1');" onerror="this.src='http://icon.zol-img.com.cn/group/default_zoler/zoler_100.jpg我要的结果是:
http://8.zol-img.com.cn/bbs/user_photo/1360/100/1359014_100.jpg
'http://icon.zol-img.com.cn/group/default_zoler/zoler_100.jpg
请问要如何更改??
另外如果想把BMP,PNG,GIF这些格式一起匹配,需要怎么更改??谢谢了
<img src="http://8.zol-img.com.cn/bbs/user_photo/1360/100/1359014_100.jpg" alt="Babybear007" id="headpic_area_1" onmouseover="APP.showList('headpic_area_1','headpic_body_1');" onerror="this.src='http://icon.zol-img.com.cn/group/default_zoler/zoler_100.jpg'"/> 我用正则表达式:
"(http://*[^>]*.jpg)"
来匹配,结果总是
http://8.zol-img.com.cn/bbs/user_photo/1360/100/1359014_100.jpg" alt="Babybear007" id="headpic_area_1" onmouseover="APP.showList('headpic_area_1','headpic_body_1');" onerror="this.src='http://icon.zol-img.com.cn/group/default_zoler/zoler_100.jpg我要的结果是:
http://8.zol-img.com.cn/bbs/user_photo/1360/100/1359014_100.jpg
'http://icon.zol-img.com.cn/group/default_zoler/zoler_100.jpg
请问要如何更改??
另外如果想把BMP,PNG,GIF这些格式一起匹配,需要怎么更改??谢谢了
"(http://*[^>]*.(jpg|bmp|png|gif))"
string str="<img src=\"http://8.zol-img.com.cn/bbs/user_photo/1360/100/1359014_100.jpg\" alt=\"Babybear007\" id=\"headpic_area_1\" onmouseover=\"APP.showList('headpic_area_1','headpic_body_1');\" onerror=\"this.src='http://icon.zol-img.com.cn/group/default_zoler/zoler_100.jpg'\"/> ";
foreach (Match match in Regex.Matches(str, "http:[^'\"]+(jpg|bmp|gif|png)"))
{
Console.WriteLine(match.Value);
}
即 还需要考虑边界符。so……
如' 或"号或\s或>等,至于'或"号的配对前面捕获一下加个\1就可以了。
关于这个正则 慕白兄的说法我有所疑义
如果alt引用的是图片原url输出
如下所示
string str = "<img src=http://8.zol-img.com.cn/bbs/user_photo/1360/100/1359014_100.jpg alt=http://8.zol-img.com.cn/bbs/user_photo/1360/100/1359014_100.jpg id=\"headpic_area_1\" onmouseover=\"APP.showList('headpic_area_1','headpic_body_1');\" onerror=\"this.src='http://icon.zol-img.com.cn/group/default_zoler/zoler_100.jpg'\"/> ";
foreach (Match match in Regex.Matches(str, "http:[^'\"]+(jpg|bmp|gif|png)"))
{
Console.WriteLine(match.Value);
}
我想输出的就不太是原预想值了OJ兄,你不要误会,我说的不能说明你的技术问题,而是没有留意而已,正则这块我离你还有很长的距离呢。
string str="<img src=\"http://8.zol-img.com.cn/bbs/user_photo/1360/100/1359014_100.jpg\" alt=\"Babybear007\" id=\"headpic_area_1\" onmouseover=\"APP.showList('headpic_area_1','headpic_body_1');\" onerror=\"this.src='http://icon.zol-img.com.cn/group/default_zoler/zoler_100.jpg'\"/> ";
Regex reg = new Regex(@"(?is)src=(['""\s])(?<src>[^'""\s]*)\1");
foreach (Match m in reg.Matches(str))
{
Response.Write(m.Groups["src"].Value + "<br/>");
}
/*
http://8.zol-img.com.cn/bbs/user_photo/1360/100/1359014_100.jpg
http://icon.zol-img.com.cn/group/default_zoler/zoler_100.jpg
*/
cj205很仔细啊,借LS的改进一下
Regex reg = new Regex(@"(?is)\ssrc=(['""\s])(?<src>[^'""\s]+(jpg|bmp|gif|png))\1");