假设有以下字符串:“这是第一个iFrame,内容是<iframe id="frame1" width="0" border="0" scrolling="no"></iframe>之后又有第二个iFrame,内容是<iframe id="frame2" width="100" borde="0" src="page1.htm" scrolling="no"></iframe>,这里有一个图片<img src="flower.jpg" border="0"/>,有第三个iFrame,它的内容是<iframe id="frame3" width="100" borde="0" src="page2.aspx" scrolling="no"></iframe>,后面就没有啦”希望通过正则表达式提取出每个iFrame中的网页文件地址,求高手给出解决方案:

解决方案 »

  1.   

    (?<=<iframe[^>]*?src=")[^"]*(?="[^<]*</iframe>)
      

  2.   

    一定要用正则吗?用String取不行吗?
      

  3.   

    Regex reg=new Regex("(?<=<iframe[^>]*?src=\")[^\"]*(?="[^<]*</iframe>)");
    string result=string.Empty;
    string html="你的网页代码";
    foreach(Match m in reg.Matchs(html))
    {
     result+=m.Value+"\r\n";
    }
    结果是:
    page1.htm
    page2.aspxLZ要的是这个吗?
      

  4.   

    哈哈.的确是我想要的.多谢了.不过够神奇的是,这个正则表达式在VS2003中是匹配不到任何数据的,在VS2008中测试,却能匹配得到.
      

  5.   

    我这里确实是那样.同样的代码从VS2003的工程拷到VS2008的工程里就OK了.所以我才觉得神奇呢.按说不可能出现这种情况的.
      

  6.   

    其实这个正则是的后半句可以去掉。。再把大小写也忽略了。。你可以试下:
    (?i)(?<=<iframe[^>]*?src=\")[^\"]*