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);
这个正则一看 有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());