Text matching language是Proxomitron中最複雜的部分。一開始想要瞭解他是蠻困難的—尤其是你從不曾學過程式語言的話。然而,別灰心,即使學會一條最簡單的規則都是一大進步。一次學一點,很快的你就會學會他了!這裡有一些技巧供你參考。


注意:這一部份你可能要會一點HTML,網路上有很多資源供你參考(也有中文的喔!)。如果你不打算寫你自己的過濾規則,你可以不看這一段。



撰寫過濾規則的技巧


複雜的過濾規則通常不太容易理解。但是,要讓他比較容易看懂,你可以把「搜尋」和「取代」欄中的文字分行,這不會影響過濾的效果。如果真的要搜尋或取代分行符號,你應該用「\n」。


Also because spaces always match true, you can normally use them freely to separate elements of a matching expression. Just be aware that they do consume spaces they find. 


一般事項


創造一條新規則時,要「由簡入繁」。從簡單的開始,在一點一點的加強。這樣,在規則突然不如你預期時,你就可以知道到底哪裡出問題了。


用記錄視窗(log window)來看那調規則正在作用,用瀏覽器中的「觀看原始檔」(view source)來看看過濾的結果。這兩樣工具是幫助你創造新規則時的好幫手。更有力的工具是「new Match Testing Window」(在輸入規則時有沒有看到一個「test」按鈕?),他可以讓你看到HTML是如何被過濾的。


剪下和貼上HTML

要怎麼開始創造新的過濾規則呢?通常一個好的開始可以是把你有興趣的HTML貼到「搜尋」欄中。要注意的一點是分行符號,因為在搜尋時Proxomitron會忽略分行符號,結果:?????????????????????????????????

<br>
<p>

對Proxomitron來說就好像「<br><p>」。

seems just like "<br><p>" to it. This can cause trouble since the actual HTML also has a newline character that must be matched. The solution is simply to place a space at the begining or end of each line (if it doesn't already have one) this will match all "whitespace" including any newlines.


使一個tag標籤或標籤內的敘述失效


既然瀏覽器會忽略任何他不瞭解的tag標籤或敘述,一個快、有效(但是不太正大光明)的方法就是藉由重新命名的方法來使某個標籤或標籤內的敘述失效。這在對付某些被很多標籤內都會用到的敘述時很有用。以「onload」為例,這個敘述會自動執行JavaScript,雖然這個敘述通常用於「<body...>」標籤之中,他也可能用於網頁中的其他部分。要使這個敘述失效,你可以:

Matching: onload=
Replace: LoadOff=

這會讓你將像這樣的標籤…
<body background="bak.gif" onload= "window.open(myadd);" >

變成
<body background="bak.gif" LoadOff="window.open(myadd);" >

看到了嗎?多麼簡單的式子阿!但是同時這也有些冒險,「onload=」也有可能在標籤外面(也就是網頁本文中)出現,但是實際上這很少發生(將等號包含進搜尋是中也有助於減少這種狀況發生)。就算這真的發生了,只要你知道發生了什麼事,通常這也沒啥麼大不了的。


一石二鳥


有一個簡單的方法同時改變開始和結束標籤。這個技巧在「將閃爍字改成粗體字」中有使用到。在這個例子中,我們想將閃爍字「<blink>和</blink>」分別改成粗體字「<b>和</b>」。


Matching: <\1blink>
Replace: <\1b>


藉由「\1」這個變數,這個規則可以同時適用於開始和結尾的標籤。「\1」搜尋到反斜線「\」,並將他放到取代欄中。一個較安全,但是比較複雜的方法是:


Matching: < ( / | )\1 blink>
Replace: <\1b>


你能看出有什麼不同嗎?如果還不行,沒關係,請參考"Testing for something or nothing".************************


保留tag標籤內的內容


你經常會希望只改變tag標籤內的某一條敘述,而不要更改其他的部分,這時候,數字變數「\#」就很有用了。底下這個例子是「過濾網頁背景畫面」。


Matching: <body \1 background=\w \2 >
Replace: <body \1 \2>



When they don't directly follow parenthesis ( ... )'s the \# variables act just like an asterisk "*". Here, the "\1" captures anything before the background element, while the "\2" captures everything afterwards. In the replacement text, the background element is simply left out, but you could also include your own background here.



 
Hosted by www.Geocities.ws

1