URL 関連のエスケープ文字列

\u : URL 全体 [url.href]
\h : ホスト名(ポート番号は含まれない)[url.hostname]
\p : パス名 [url.pathname]
\q : クエリ部 [url.search]
\a : ハッシュ部 [url.hash]

※カギカッコ内は JavaScript における表現。


URL Match 欄

Web Page Filter 及び Headers Filter で共通の仕様。

http:// などのスキームは不要。
検索は前方一致で行われる。末尾に * が追加されるイメージで空文字列の場合はすべてにマッチする。

"apple.com" -> "apple.com*"
"" -> "*"

"?","&" はメタキャラクタなのでマッチさせる場合はそれぞれ "\?","\&" と記述する。
"." はメタキャラクタではないので "." のみにマッチする。
終端マッチを表すメタキャラクタはないが、(^?) で代用可。
よって完全一致検索は

ja.wikipedia.org/wiki/Proxomitron(^?)

と書ける。


ドメインを限定してフィルタリング

特定ドメインをフィルタリングの対象とするには以下のように記述する。

goo.ne.jp((^?)|/)

さらにサブドメインも含めたい場合は

[^/]++.|)goo.ne.jp((^?)|/)

と書ける。$URL だとこんな感じ。

$URL([^/]++.|)goo.ne.jp((^?)|/))


Perl 互換の正規表現との違い

* はすべての文字にマッチする。

* -> (.|[\r\n])*

末尾に指定された場合は最後までマッチする。

before: abababab
match : b*
relace: X 
after : aX

途中で指定された場合は最短マッチでグローバル検索される。

before: abababab
match : b*a
relace: X 
after : aXXXb

最長マッチは出来るのだろうか?


? は一文字にマッチする。

? -> (.|[\r\n])

= は前後の空白文字も吸収する。

= -> \s*=\s*


条件文を模倣する

Proxomitron には条件式を評価するステートメントがなく、True と False がダイレクトで返される。ただしブロックを上手く利用することでこのステートメントを模倣することが可能である。

(1) if ステートメント
(condition (
   [true block]
)|) 

(2) if...else ステートメント
(condition (
  [true block]
)|(
  [false block]
))  

ただし各ブロック内で false を返すコマンドがないように注意する必要がある。ちなみにマッチタイプのコマンドは (%COMMAND|) と記述することで false を返さないようにできる。


はてな?







最終更新:2009年05月17日 07:54