首页 新闻 会员 周边

解释一下下面的正则表达式

0
[已解决问题] 解决于 2015-05-03 09:56

Regex reg = new Regex(@"<img\b[^<>]*?\bsrc[\s\t\r\n]*=[\s\t\r\n]*[""']?[\s\t\r\n]*(?<imgUrl>[^\s\t\r\n""'<>]*)[^<>]*?/?[\s\t\r\n]*>", RegexOptions.IgnoreCase);

星星点灯6的主页 星星点灯6 | 初学一级 | 园豆:164
提问于:2015-04-28 15:59
< >
分享
最佳答案
0

这个正则一看 有img ,肯定跟图片有关系。

首先匹配 <img标签 ,\b表示一个单词边界 结束,

[^<>]*? 匹配除了'<','>'尖括号以外的所有字符,

src[\s\t\r\n]*=[\s\t\r\n]* ,匹配 src 路径,src与=之间可能有空格、制表符、换行符等([\s\t\r\n]*)。

(?<imgUrl>[^\s\t\r\n""'<>]*)[^<>]*?/?[\s\t\r\n]*>,取src 值放到 imgUrl分组(后面可以通过group取路径,命名捕获组),后面又是空格、换行符神马的。

Regex reg = new Regex(pattern);
MatchCollection matchs = reg.Matches(strInput);//strInput

StringBuilder sb = new StringBuilder("");
            foreach (Match v in matchs)
            {
                if (!string.IsNullOrEmpty(v.Value))
                {
                    if (v.Groups.Count > 0)
                        sb.Append(string.Format("{0}<br>", v.Groups[0].Value));
                    if (v.Groups.Count > 1)
                        sb.Append(string.Format("{0}<br>", v.Groups["imgUrl"].Value));
                }
            }

Response.Write(sb.ToString());
奖励园豆:5
Charles‘ | 菜鸟二级 |园豆:211 | 2015-05-01 15:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册