在Dreamweaver中使用正则表达式清除整站下载文件中的冗余代码:tppabs等

  •   2009-07-29/12:16
  • 小弟近来使用Teleport Pro软件下载一个纯html的静态网站(嗯,不知道称呼它为静态网站是否合适,先这样将就着吧).下载下来之后,发现里面多了好多的冗余信息,例如下面的片断…

    tppabs="http://www.****.net/images/thirdkind1.gif" class="style4">基础教程

    红色部份是多余的数据, 我现在想把整个页面下的所有以tppabs=开头的并以第一个”为终止符的属性删除,可是手工操作太慢,没有效率,而且还易出错。

    我第一个想到的就是使用搜索替换,可是什么软件的效率能最高呢?

    使用DreamweaverMX 2004的站点搜索替换功能。就是它,里面还有一个我们不会注意强大功能,使用正则表达式。呵呵,好了,我们的工具浮出水面,接下来就看怎么使用了!

    查看了一下资料,找到如下内容:正则表达式是以文本描述字符组合的模式。在代码搜索中使用它们有助于描述一些概念,例如“以‘var’开始的行”和“包含数字的属性值”。

    下表列出了在正则表达式中使用的特殊字符、其含义和用法示例。若要搜索包含该表中某一特殊字符的文本,请在特殊字符前面附加一个反斜杠,令其“转义 ”。例如,若要在 some conditions apply* 短语中搜索实际的星号,您的搜索模式应类似于:apply\*。如果您没有令星号转义,您将找到“apply”的所有匹配项(以及“appl”、 “applyy”和“applyyy”的所有匹配项),而不只是后面跟有星号的那些匹配项。

    字符 匹配 示例
    ^ 输入或行的起始部分。 ^T 匹配“This good?earth”中的“T”,但不匹配“Uncle?Tom's Cabin”中的“T”。
    $ 输入或行的结尾部分。 h$ 匹配“teach”中的“h”,但是不匹配“teacher”中的“h”
    * 0 个或多个前置字符。 um* 匹配“rum”中的“um”、“yummy”中的“umm”以及“huge”中的“u”
    + 1 个或多个前置字符。 um+ 匹配“rum”中的“um”和“yummy”中的“umm”,但在“huge”中没有任何匹配项
    ? 前置字符最多出现一次(即,指示前置字符是可选的)。 st?on 匹配“Johnson”中的“son”和“Johnston”中的“ston”,但在“Appleton”和“tension”中没有任何匹配项
    . 除换行符外的任何单字符。 .an 匹配短语“bran muffins can?be tasty”中的“ran”和“can”
    x|y x 或 y。 FF0000|0000FF 匹配 bgcolor=”#FF0000” 中的“FF0000”和 font color=”#0000FF” 中的“0000FF”
    {n} 恰好 n 个前置字符。 o{2} 匹配“loom”中的“oo”和“mooooo”中的前两个“o”,但在“money”中没有任何匹配项
    {n,m} 至少 n 个、至多 m 个前置字符。 F{2,4} 匹配“#FF0000”中的“FF”和“#ffffff”中的前四个“F”
    [abc] 用括号括起来的字符中的任何一个字符。用连字符指定某一范围的字符(例如, [a-f] 等效于 [abcdef])。 [e-g] 匹配“bed”中的“e”、“folly”中的“f”和“guard”中的“g”
    [^abc] 未在括号中括起来的任何字符。用连字符指定某一范围的字符(例如,[^a-f] 等效于[^abcdef])。 [^aeiou] 最初匹配“orange”中“r”、“book”中的“b”和“eek!”中的“k”
    \b 词边界(例如空格或回车符)。 \bb 匹配“book”中的“b”,但在“goober”和“snob”中没有任何匹配项
    \B 词边界之外的任何内容。 \Bb 匹配“goober”中的“b”,但在“book”中没有任何匹配项
    \d 任何数字字符。等效于 [0-9]。 \d 匹配“C3PO”中的“3”和“apartment 2G”中的“2”
    \D 任何非数字字符。等效于 [^0-9]。 \D 匹配“900S”中的“S”和“Q45”中的“Q”
    \f 换页符。
    \n 换行符。
    \r 回车符。
    \s 任何单个空白字符,包括空格、制表符、换页符或换行符。 \sbook 匹配“blue book”中的“book”,但在“notebook”中没有任何匹配项
    \S 任何单个非空白字符。 \Sbook 匹配“notebook”中的“book”,但在“blue book”中没有任何匹配项
    \t 制表符。
    \w 任何字母数字字符,包括下划线。等效于 [A-Za-z0-9_]。 b\w* 匹配“the barking dog”中的“barking”以及“the big black dog”中的“big”和“black”
    \W 任何非字母数字字符。等效于 [^A-Za-z0-9_]。 \W 匹配“Jake&Mattie”中的“&”和“100%”中的“%”

    使用括号在正则表达式内分隔出以后要引用的分组。然后在“替换”域中使用 $1、$2、$3 等来引用第一个、第二个、第三个和更后面的括号分组。

    如:替换"/main.asp?classid=286"替换成"class(286)"

    查找:/main.asp\?classid=(\d+)

    替换:class($1)

    注意:在“查找内容”文本框中使用 \1、\2、\3 等(而不是 $1、$2、$3)来引用正则表达式中更早的括号分组。

    下面是我使用的正则表达式。很好用:

    \btppabs="h[^"]*"

    然后进行搜索替换操作就OK了!呵呵…有时很不起眼的功能,往往能很大程度上地为我们节省时间,提高工作效率。我希望这文可以引玉,大家多多试验,相信一定会为您的开发和使用带来无尽的便利。

    这是Teleport Pro软件留下的标记。该软件是离线浏览器,下载完整个网页后,它会在图片标签内插入tppabs标签以记录该图片的原始地址。因为这个标签不是合法标 签,所以普通浏览器会忽略它。你可以通过element.getAttribute("tppabs")在JS中读取这个属性。

    可以在 DreamWeaver中使用正则表达式批量清除这种代码.
    具体写法如下:
    匹配tppabs标签:
    \btppabs="h[^"]*"
    替换为
    (空)
    匹配javascript代码:
    href="javascript:if\(confirm\('htt[^"]*"
    替换为
    href="../"
    注意替换的时候.应该勾选 "使用正则表达式"
    本文来自: 何苦的搜索引擎营销博客(http://www.heku.org.cn/) 详细出处参考:http://www.heku.org.cn/SEO/tppabs-Teleport.html




    用Teleport pro下载的离线网页文件(整站下载得到)源码中,包含了大量的

    < tppabs="http://www.****.com/images/bg.gif" style="font-size:12px;">

    以及

    <a href="javascript: if(confirm('http://www.xxx.com/bbs/   \n\n文件并未依 Teleport Pro 取回,因为 服务器报告因 为错误的发生导致无法读取。   \n\n你要从服务器上打开它吗?'))window.location='http: //www.xxx.com/bbs/'" >

    这样的代码,这些是 Teleport pro给代码加的.相当于一个说明.提示.

    可以在 DreamWeaver中使用正则表达式批量清除这种代码.

    具体写法如下:

    匹配tppabs标签:
    \btppabs="h[^"]*"

    替换为

    (空)

    匹配javascript代码:
    href="javascript:if\(confirm\('htt[^"]*"

    替换为

    href="../"

    注意替换的时候.应该勾选 "使用正则表达式"

    css文件中,还有一些类似/*tpa=http://image.39.net/cancer/images/focus_bmark_bg.gif*/这样的代码

    用正则,是这样做的.

    tpa=http://[^\s]*.gif

    替换为

    (空)

    然后剩下的就是/**/ 了,可以不需要正则替换了.


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多