阿宽

Nothing is more powerful than habit!
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

正则取出img中src

Posted on 2010-11-29 09:23  宽田  阅读(1465)  评论(0编辑  收藏  举报

有下例Html代码

    <div>
        
<img alt='' src="/UpLoad/image/111.jpg" /><img alt='' src='/UpLoad/image/222.jpg' /><img
            
src='./UpLoad/image/333.jpg' alt='' /></div>
    
<div>
        
<img alt='' src='/UpLoad/image/444.jpg' />
        
<img src='../sa/UpLoad/image/333.jpg' alt='' />
    
</div>

 现在要取出img中的src。正则的写法如下:

<img[^>]*src\s*=\s*['"]([\w/\-\.]*)['"][^>]*

 

解释:

 <img[^>]*  :查找以<img开头,以>终止的内容。

src\s*=\s*['"]([\w/\-\.]*)['"][^>]*:查找src开头,以>终止的内容,并取src中内容。

\s*     :0或多个空格

 ['"]    取一个'或“。

 ([\w/\-\.]*)取单词字符,包含_/-.等字符。(),表示用Groups方式取到值。

 

 用法:

    private void FindImageInXmlMethod()
    {
        
string ImgXml = " <div><img alt=''  src=\"/UpLoad/image/111.jpg\" /><img alt=''  src='/UpLoad/image/222.jpg' /><img  src='./UpLoad/image/333.jpg'  alt=''  /></div>"
            
+ @"<div><img alt=''  src='/UpLoad/image/444.jpg' />
            <img  src='../sa/UpLoad/image/333.jpg'  alt=''  />
            </div>
";

        
string RegEx = "<img[^>]*src\\s*=\\s*['\"]([\\w/\\-\\.]*)['\"][^>]*";
        Regex imgRegex = new Regex(RegEx,RegexOptions.IgnoreCase);

        MatchCollection matchCollection 
= imgRegex.Matches(ImgXml);
        
foreach (Match matchItem in matchCollection)
        {
            
string val = matchItem.Value;
            val 
= matchItem.Groups[1].Value;
            Response.Write(val 
+ "<br/>");
        }
    }

结果:

/UpLoad/image/111.jpg
/UpLoad/image/222.jpg
.
/UpLoad/image/333.jpg
/UpLoad/image/444.jpg
..
/sa/UpLoad/image/333.jpg