$LST(blockfile name)
$LSTは com|net|org|info|biz|name|pro
のような「長い記述のOR関数」をより簡単に、素早く検索するためのマッチングコマンドです。
主に、検索表現, URL欄 でテストするために使用されます。
$LST には以下の特徴があります。
NoAddURL
JunkBuster
NoHash
NoUrlHash
NoPreHash
Logfile
以下に、各スタイルの内容、及び、ブロックリストで使える特別な機能(インデント, 例外指定) を紹介します。
# $LST(URL-List) # somehost.com [^.]+.somehost.com/ # adserver.com ([^/]++.|)adserver.com/
URLを記述するブロックリストへの記入例です。
一部の行頭にシャープ(#) を付けて、コメントアウトしているのが判りますね。
[^.]+.somehost.com/
と ([^/]++.|)adserver.com/
には、URLスタイル のハッシュ化が適用されます。
URLスタイル は以下の仕組みで動作しています。
[^.]+.abc.somehost.com/
なら、"com" → "somehost" → "abc"
の順番で読み込む。)URLスタイル のハッシュ化が適用される条件は以下の通りです。
/
, :
) が存在するこの条件を満たすためにも、URLをリストへ記述するときには、出来るだけ、「ホスト名の最後を示す文字」を入れるようにしてください。
そうすることで、Proxomitron はリストを素早く検索できるようになります。
[^.]+.somehost.com/
に注目して下さい。
[^.]+
は第3レベルドメインを指定しています。
「[^.]+
は後ろを見ないので、スラッシュ(/) を超えてマッチしてしまうのでは…」という懸念を抱く方がいるかもしれませんが、大丈夫です。
ホスト名は最低でも第2レベルドメインまで必要ですので、ピリオド(.) が1つもないホスト名はあり得ません。
従って、[^.]+
はホスト名の内にある事を保証できます。
次に、([^/]++.|)adserver.com/
を見てください。
[^/]++
はホスト名の内にある事を保証する表現ですが、[^.]+
と違い、複数のレベルのドメイン名を含むことが出来ます。
つまり、adserver.com/
, www.adserver.com/
, www.abc.adserver.com/
のいずれにもマッチするという事です。
# NoAddURL # $LST(Jump-List) # sample.com jump.sample.com/\?url\=(?+)\0 $JUMP(\0) # jump.com www.jump.com/\?url\=(?+)\0 $JUMP(\0)
1行目の NoAddURL
に注目してください。
Proxomitronはリストに NoAddURL
のキーワードを見つけると、タスクトレイの [右クリックメニュー -> BlockFileに追加] の一覧から、リストを隠します。
このように、キーワードをコメント内に埋め込むことが出来ます。
上のブロックリストにもURLを示す文字列がありますが、ワイルドカードで始まっていないので「URLスタイル」のハッシュ化は適用されません。
これらには「固定プレフィックス スタイル」のハッシュ化が適用されます。
「固定プレフィックス スタイル」のハッシュ化が適用される条件は非常にシンプルです。
「行頭からワイルドカードを含まない文字まで」の表現が長いほどハッシュ化が進行します。
jump.sample.com/...
の下りの行は、jump.sample.com/\?url\=
がハッシュ化の対象となります。
エスケープされたメタキャラクタはワイルドカードとしては扱われません。
# ヘルプによれば、「ハッシュ化するか否かの鍵」はワイルドカードとされていますが、実際にはメタキャラクタのない部分がハッシュ化されているようですね。
# JunkBuster # $LST(JunkBuster-List) # sample.com www.sample.com/ # somehost.com www.somehost.com/
1行目の JunkBuster
に注目してください。
Proxomitronはリストに JunkBuster
のキーワードを見つけると、「JunkBusterスタイル」のリストとして読み、解釈しようとします。
JunkBusterスタイル は URLスタイル と正反対の動作をします。
www.somehost.com/
なら、"www" → "somehost" → "com"
の順番で読み込む。)JunkBusterスタイル のハッシュ化が適用される条件は以下の通りです。
/
, :
) が存在するJunkBusterスタイル はそれを宣言した時点で、JunkBusterスタイル のみが適用されます。
JunkBusterスタイルを使わないと、「固定プレフィックス スタイル + URLスタイル」のように2つのスタイルを併用できます。
特に事情がなければ JunkBusterスタイル を使う理由はないと思いますが、ケースバイケースなので、よく考えて使用してください。
# $LST(Indent-List) # sample.com www.sample.com/dir1/dir2/... sample.html $LOG(!WMatched sample.html) # somehost.com www.somehost.com/dir1/dir2/... somehost.html $LOG(!WMatched somehost.html)
ブロックリストには、インデントを入れることも出来ます。
上の例は見た目にはわかりづらいですが、sample.com
はタブ文字でインデント。
somehost.com
は半角空白でインデントしています。
インデントは、長文をリストに登録する時に有効なテクニックです。
# $LST(Exception-List) # sample.com www.sample.com/ # 例外指定 ~*.html
「例外指定のコメント」の下部にある ~*.sample.html
に注目してください。
~
で始まる行はその表現にマッチしなかった時に真を返します。
つまり、www.sample.com/
にマッチしても、*.html
にマッチしたら、Proxomitronはブロックリストにマッチしなかったものとして解釈します。
例外指定は全てに優先するので、リスト内の全ての表現は *.html
にマッチしなかった時でなければ、リストにマッチしたと見なされません。
「それでは困る」という場合は、個別にNOT関数で例外指定と同等の表現を作ると良いでしょう。
例えば、www.sample.com/
にだけ例外指定をしたい場合は、www.sample.com/(^*.html)
とすればOKです。