今天Xushine研究院来和大家讨论下关于CSS图片路径获取的正则表达式~

假设我们的CSS内容这样的:

CSS code

.sub_nav { PADDING-BOTTOM: 0px; PADDING-LEFT: 76px; WIDTH: 467px; PADDING-RIGHT: 77px; BACKGROUND: url(http://k.xushine.net/20101206/9ae_90f01bfa_77a8_4701_982f_9ffd24f51a02_0.jpg) repeat-y left top; PADDING-TOP: 0px } .sub_nav_bottom { PADDING-BOTTOM: 17px; WIDTH: 467px; BACKGROUND: url(http://k.xushine.net/20101204/9ae_34eda8e0_0f76_4e08_aad9_48f74a0d4b5f_1.jpg) no-repeat left bottom } .sub_nav_top { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 20px; PADDING-LEFT: 30px; WIDTH: 407px; PADDING-RIGHT: 30px; BACKGROUND: url(http://k.xushine.net/20101204/9ae_34eda8e0_0f76_4e08_aad9_48f74a0d4b5f_2.jpg) no-repeat left top; PADDING-TOP: 17px }

 

 

现在如果我们需要提取的是关于这个图片的jpg gif 以及png这三种常用的图片的url,我们需要怎么来进行呢Xushine研究院来和大家讨论下关于CSS图片路径获取的正则表达式~

 

在讨论这个问题之前,随手写了一个正则,发现其实并不是完全匹配。。。所以Xushine研究院才会把这个问题拿出来讨论~

现在看下刚刚兔兔写的正则:background:url((?<ImgUrl>.*?))

乍一看木有错误,但是仔细一看就发现问题咯~background:#fffdf4 url(../images/k_error.gif) 比如这种写法...就匹配不到了...这就是无法识别的转义序列呀~

现在给出一个完整的实例程序大家一看便知~

public static string[] GetHtmlImageUrlList(string sHtmlText)
{
   List<string> list = new List<string>();
   Regex regImg = new Regex(@"(?is)(?<=BACKGROUND:s*url()[^)]+(?=))");
   MatchCollection matches = regImg.Matches(sHtmlText);
   foreach (Match m in matches)
   {
       list.Add(m.Value);
   }
   return list.ToArray();
}
string[] urls = GetHtmlImageUrlList(yourStr);
foreach (string s in urls)
{
    richTextBox2.Text += s + "n";
}

 

4 对 “获取css图片路径的正则表达式”的想法;

评论被关闭。