$JUMP の前に & が必要かどうか云々 Edit

メッセージ Edit

『$JUMP の前に & は不要』という方が居たが、それは本当なのか検証する。

実験1 Edit

デフォルトであるフィルタ ※IE7ではフィルタの入れ替えが必要です

In = FALSE
Out = TRUE
Key = "URL: Alias Redirector (Out)"
URL = ".$LST(AliasList)"

4.3, 4.4 の URL Alias List.txt の最終行

\1 & $JUMP(http://www.google.com/search?q=\1)

4.5m, 4.5j の URL Alias List.txt の最終行

\1/ & $JUMP(http://www.google.com/search?q=\1)

どちらも $JUMP の前に & があるが、これを外して、http://.test/ にアクセスするとどうなるか。(IE7の場合は http://,test/

\1 $JUMP(http://www.google.com/search?q=\1) の場合
4.3, 4.4, 4.5m, 4.5j, 4.5j338 の全てで、検索できず(\1が空になっているため)

これは、$JUMP() 実行時、\1 への代入(検索)が終わっていないため。
(この場合の \0-9# は、空にもマッチする、後ろを見る最長一致として動作しているが、1Byteマッチさせる度に後ろを見ている = \1 が最短の0Byte(空)にマッチするかを調べた次の瞬間に $JUMP() が実行されてしまう為、\1 が空になっている)
\1/ $JUMP(http://www.google.com/search?q=\1) の場合
4.3, 4.4, 4.5m, 4.5j, 4.5j338 の全てで、正常に検索される

勿論、『\1 & $JUMP(http://www.google.com/search?q=\1)』、『\1/ & $JUMP(http://www.google.com/search?q=\1)』も同様に正常に検索される。

これは、$JUMP() 実行時、\1 への代入が既に終わっているためである。

実験2 Edit

>ちなみに、URL欄で代入した変数を同じURL欄で展開(参照)したいなどという場合は、「\0&$ALERT(\0)」の様に & か && を使えば、同じ欄でも参照出来る。
>※「$SET(0=〜〜)$ALERT(\0)」の様に、$SETを使えば & && は不要

[HTTP headers]
In = FALSE
Out = FALSE
Key = "URL: TEST 1  \0 & $ALERT(\0)  URL"
URL = "\0&$ALERT(\0)"

In = FALSE
Out = FALSE
Key = "URL: TEST 2  \0 $ALERT(\0)  URL"
URL = "\0$ALERT(\0)"

In = FALSE
Out = FALSE
Key = "URL: TEST 3  \0[/>] $ALERT(\0)  URL"
URL = "\0[/>]$ALERT(\0)"

In = FALSE
Out = FALSE
Key = "URL: TEST 4  \0 & $ALERT(\0)  Match"
Match = "\0&$ALERT(\0)"

In = FALSE
Out = FALSE
Key = "URL: TEST 5  \0 $ALERT(\0)  Match"
Match = "\0$ALERT(\0)"

In = FALSE
Out = FALSE
Key = "URL: TEST 6  \0[/>] $ALERT(\0)  Match"
Match = "\0[/>]$ALERT(\0)"

TEST1、TEST4 と TEST3、TEST6 は URLをダイアログに表示するが、TEST2、TEST5 の方は ダイアログに何も表示しない

結論 Edit

\0-9# を参照するコマンドを検索語の最後に使用し、更にその前に \0-9# を置く場合は & が必要で、それ以外の場合基本的に不要 と言える。

高速化しそうだからという理由で、片っ端から & を消すのはやめるべし。




複製名前変更