需求:需要把css文件里的 background:url(xxx.jpg)中的图片路径解析转换。

解决方案 »

  1.   

    body 
    {
        background:red url() no-repeat;
        background:url(img/1.jpg) no-repeat;
        background-image:url(img/1.jpg);
    }
      

  2.   

                string str = @"body  
    {
      background:red url() no-repeat;
      background:url(img/1.jpg) no-repeat;
      background-image:url(img/2.jpg);
    }";
                Regex reg = new Regex(@"(?is)(?<=background[^:]*?:url\s*\()[^\)]+(?=\))");
                foreach (Match m in reg.Matches(str))
                {
                    Response.Write(m.Value + "<br/>");
                }
    /*
    img/1.jpg
    img/2.jpg
    */
      

  3.   

    是否会有下面的情况?楼主应该说明可能的情况:{
      background:red url() no-repeat;
      background:url(‘img/1.jpg’) no-repeat;
      background-image:url(“img/2.jpg”);
      background-image:url(“http:// xxx.xx.xx.xx/img/2.jpg”);
    }";
      

  4.   

    void Main()
    {
    string str = @"body  
    {
      background:red url() no-repeat;
      background:url(img/1.jpg) no-repeat;
      background-image:url(img/2.jpg);
    }";
    Regex reg = new Regex(@"(?i)(?<=url\s*\()[^\)]+(?=\))");
    foreach (Match m in reg.Matches(str))
    {
    Console.WriteLine(m.Value);
    }
    /*
    img/1.jpg
    img/2.jpg
    */
    }
      

  5.   


           static void Main(string[] args)
            {
                string str = @"body  
    {
      background:red url() no-repeat;
      background:url(img/1.jpg) no-repeat;
      background-image:url(img/2.jpg);
    }";
                string pattern=@"(?is)(?<=url\s*\()[^\)]+(?=\))";
                Regex regex = new Regex(pattern);
                foreach (Match m in regex.Matches(str))
                    Console.WriteLine(m.Value);
                Console.ReadKey();
            }