小弟近来使用Teleport Pro软件下载一个纯html的静态网站(嗯,不知道称呼它为静态网站是否合适,先这样将就着吧).下载下来之后,发现里面多了好多的冗余信息,例如下面的片断…
<a href="javascript:if(confirm('http://www.todayonhistory.com/7/24/ZhiTianXiaJiang-YeLvChuCaiDanChen.html  \n\n文件并未依 Teleport Pro 取回,因为 它的域或路径超过开始网址中设置的范围。  \n\n你要从服务器上打开它吗?'))window.location='http://www.todayonhistory.com/7/24/ZhiTianXiaJiang-YeLvChuCaiDanChen.html'" tppabs="http://www.todayonhistory.com/7/24/ZhiTianXiaJiang-YeLvChuCaiDanChen.html">
现在要求将这个片断中只保留<a href="/7/24/ZhiTianXiaJiang-YeLvChuCaiDanChen.html">请教用正则表达式如何实现这个目标?注意:红色部分的代码是不固定的

解决方案 »

  1.   

    没看明白需求..
    是要将<a href="javascript:if(confirm('http://www.todayonhistory.com/7/24/ZhiTianXiaJiang-YeLvChuCaiDanChen.html  替换成<a href="/7/24/ZhiTianXiaJiang-YeLvChuCaiDanChen.html">么?去掉前面冗余的javascript:if(confirm(' 是否这个意思?
      

  2.   


    <html>
        <head>
            <script language="javascript">
                window.onload=function(){
                    var str=document.body.innerHTML;
                    var a;
                    var rex=/(<a\s.*?\s?href\s*=)\s*['|"]?[^\s'"]+[\s'"]+(http:\/\/).*?\/(.*?.html).*?[\s'"](>)+/igm;
                    if( rex.test(str)){
                        a=str.replace(rex,"$1 $2 $3 $4");
                    }
                    alert(a);
                }
            </script>
        </head>
        <body >
            <a href="javascript:if(confirm('http://www.todayonhistory.com/7/24/ZhiTianXiaJiang-YeLvChuCaiDanChen.html  文件并未依 Teleport Pro 取回, 它的域或路径超过开始网址中设置的范围。  \n\n你要从服务器上打开它吗?'))"></a>  </body>
               </html>
      

  3.   

    可以换个思维,抓取页面body区域所有的超连接,然后滤重,然后再拼成<a href="......">的格式
      

  4.   

    你是用软件抓下来的吧?window\.location=\'http:\/\/www\.todayonhistory\.com([^']+)\'[^>]+
      

  5.   

    那啥,你可以用perl之类的脚本来做,很方便
      

  6.   

    <a href=\"javascript:if\(confirm\(\'http:\/\/www.todayonhistory.com(.+?)\.html[^>]+>
      

  7.   

    多谢楼上的各位。问题已经解决啦。我是用DREAMWEAVER中的站点查找替换完成的。
    分三步来:
    第一步:匹配tppabs标签: 
    \btppabs="h[^"]*"
    替换为
    (空)
    第二步:匹配window.location标签:
    window.location='http://www.todayonhistory.com(.+?)\.htm'"
    替换为(空)
    第三步:匹配javascript代码:
    href="javascript:if\(confirm\('http://www.todayonhistory.com(.+?)\.htm
    替换为
    href="../..$1.htm"