<p><img data-url="/b.jpg" src="/_images/pixel.gif"/><img src="/_images/pixel.gif"/></p>
把含有data-url的IMG的src替换为data-url内容
<p><img data-url="/b.jpg" src="/b.jpg"/><img src="/_images/pixel.gif"/></p>
本人初学正则表达式 最好能解释下

解决方案 »

  1.   

    string str = @"<p><img data-url=""/b.jpg"" src=""/_images/pixel.gif""/><img src=""/_images/pixel.gif""/></p>";
     Regex reg = new Regex(@"(?is)(?<=<img\b[^>]*?)data-url=(['""\s]?)([^'""]*?)\1[^>]*?(src=)(['""\s]?)([^""']*?)\4(?=[^>]*/>)");
     str = reg.Replace(str, @"data-url=$1$2$1 $3$4$2$4");
    /*
    <p><img data-url="/b.jpg" src="/b.jpg"/><img src="/_images/pixel.gif"/></p>
    */
      

  2.   

    yourhtml=Regex.Relace(yourhtml,@"(?i)(<img\b[^>]*?data-url=(['""]?)([^'""]+)\2[^>]*?src=(['"]?))[^'"]+(\4[^>]*?>)","$1$3$5");
      

  3.   

    正则改成这样好点Regex reg = new Regex(@"(?is)(?<=<img\b[^>]*?data-url=)(['""\s]?)([^'""]*?)\1[^>]*?(src=)(['""\s]?)([^""']*?)\4(?=[^>]*/>)");
    str = reg.Replace(str, @"$1$2$1 $3$4$2$4");