Extension:AbuseFilter/Rules format/ja

以下の記述形式は、C言語、Java、Perlなどの多くのプログラミング言語で条件文として用いられています.

リテラル
リテラル（非変数の文字列）は、直接もしくは で囲って書くことができます. 改行は 、タブ文字は 、'(クォート文字)は と表記します.

例

コメントアウト
また、 ～ タグを使いコメントアウトを書くこともできます. /* This is a comment */

変数
不正利用フィルターでは、パーサーによってあらかじめ定義された様々な変数を使うことができます. これらの変数はその名前をリテラルと同じように入力する事によってアクセスすることができます. また、変数の中には不正利用ログ内のリクエストに連動したものもあります.

例 USER_EDITCOUNT ARTICLE_RECENT_CONTRIBUTORS

変数にはアクションの 、 、 、 、 、 もあります.

他にも、変数の条件を と で挟むことで新たな変数を定義することができます. 以下が英語版Wikipediaの編集フィルター79号の例です.

Lists:

変数一覧
CentralAuth拡張機能を導入すると、 変数も導入されます. （ 変数に類似）.

アクションがmove（移動）の場合、 、 、名前が で始まる変数のみが使用できます. 名前が で始まる変数もありますが、この場合移動元のページ名を示す時は と、移動先のページ名は と置き換えられます. 例えば は、 や となります.

名前空間
''Manual:Namespace/jaも参照. ''

比較演算子
不正利用フィルターでは、以下の比較演算子を用い二つの変数やリテラルを比較する事ができます.
 * &mdash; 左辺の値が右辺の値を未満の場合にTrueを返します.
 * &mdash; 左辺の値が右辺の値を超える場合にTrueを返します.
 * &mdash; 左辺の値が右辺の値を以下の場合にTrueを返します.
 * &mdash; 左辺の値が右辺の値を以上の場合にTrueを返します.
 * （ も可） &mdash; 左辺の値と右辺の値が一致する場合にTrueを返します.
 * &mdash; 左辺の値と右辺の値が一致しない場合にTrueを返します.
 * &mdash; 左辺の値と右辺の値が一致し、 かつ 同じデータ種類の場合にTrueを返します.
 * &mdash; 左辺の値と右辺の値が一致しない、 もしくは 違うデータ種類の場合にTrueを返します.

四則計算
また不正利用フィルターでは、以下の計算演算子を用い二つの変数やリテラルを比較する事もできます.
 * — 足し算. 加法.
 * — 引き算. 減法.
 * — 掛け算. 乗法. アスタリスクは「×」と同じ意味.
 * — 割り算. 除法. スラッシュは「÷」と同じ意味.
 * —（左の数）の（右の数）乗. 累乗.
 * — 左の数を右の数で割った時の余りの数. 剰余.

文字列の連結
（プラス）記号を使用して、2つのリテラル文字列または2つの文字列型の変数を連結することができます.

キーワード
頻繁に使用される機能を簡略化するため、不正利用フィルターでは以下の特別なキーワードが定義されています. キーワードは演算子と同じ要領で使用できます.
 * （ も可） &mdash; 左側の文字列と右側の文字列がグロブパターン（正規表現）で一致する場合にTrueを返します.
 * &mdash; 右側の文字列に左側の文字列が含まれている場合はTrueを返します.
 * （ も可）、 &mdash; 左側の文字列と右側の文字列に正規表現パターンでの一致が（含まれている）場合をTrueを返します（ は大文字小文字を区別しません）. このキーワードはPCREライブラリを使用しています. The only PCRE option enabled is   (modifier   in PHP); for   both   and   are enabled (modifier  ).
 * ,  and
 * ,  and
 * ,  and
 * ,  and

例

関数
不正利用フィルターには、頻出する重要な問題を容易にするために多くの関数が内蔵されています. これらは のように一般的な形式が用いられています. 関数はリテラル・変数を問わず全ての文字列で使うことができます. また、関数の内容はリテラルとしても、変数としても、他の関数としても渡すことができます.

その他
 * 第2引数を第1引数で指定された言語に変換して返します. LanguageConverterのあるウィキにのみ適用されます. （新しい関数は49399で導入されました. 49397のバージョンを経由する必要があります. ）

例

論理演算子
条件数の全てもしくは一つまたは、すべての条件のうちの唯一無二の1つがTrueである場合にのみマッチします.
 * &mdash; OR – 二辺のどちらかがTrueの場合Trueを返します.
 * &mdash; AND – 二辺のどちらもがTrueの場合Trueを返します.
 * &mdash; XOR – 二辺のどちらかがTrueの場合Trueを返します. 但し、どちらもTrueである場合はFalseが返されます.
 * &mdash; NOT – 引数がFalseの場合Trueを返します.

演算の順序
一般的に、演算は左から右へ作用します. しかし、その順序は例外的になる場合もあります. フィルターが条件のいずれかの処理に失敗した時、短絡評価によりその残りの部分のチェックは停止され、次のフィルターに移ります（T43693を除く）. 評価順序は次の通りになります.
 * 1) 括弧で囲まれている文字列は単一の単位として評価されます.
 * 2) 変数やリテラルのデータへの変換（例:  を0に変換）
 * 3) 関数の呼び出し（,  等）
 * 4)  及び といった単項演算子（正の数・負の数として,  のような形で）
 * 5) キーワード
 * 6) 論理値の反転（ ）
 * 7) べき乗計算
 * 8) 掛け算・割り算・割り算の余り
 * 9) 足し算・割り算
 * 10) 比較演算子
 * 11) 論理演算子

例

 * は と等価になりますが、 とは等価にはなりません. 例えば、 や などはTrueと評価されます.
 * は と等価になりますが、 とは等価にはなりません. 例えば、 や などはFalseと評価されます.

条件のカウント


Further explanation on how to reduce conditions used can be found at Extension:AbuseFilter/Conditions.

外部リンク

 * PCRE pattern syntax.
 * meta:Edit filters benefiting to various local Wikiprojects

注釈
zh:Wikipedia:防滥用过滤器/操作指引