萬盛學電腦網

 萬盛學電腦網 >> 網頁制作 >> DivCSS教程 >> 使用正則表達式清除冗余代碼:tppabs等

使用正則表達式清除冗余代碼:tppabs等

class="area"> 小弟近來使用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="../"

  注意替換的時候.應該勾選 "使用正則表達式"

  用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

  替換為

  (空)

  然後剩下的就是/**/ 了,可以不需要正則替換了.

copyright © 萬盛學電腦網 all rights reserved