Androidアプリ5ちゃんねる(2ちゃんねる)専用ブラウザ「ChMate(旧2chMate)」のNGワードで私が使ってる正規表現です。
書き込み内容によるNGワードのほか、IDの末尾ごとにNGにする方法などについても簡単に解説しています。ChMateでのNGワードに設定で使用する際は内容をそのままコピペして使えるようになっていますので不慣れな方もぜひチャレンジしてみてください。
ChMateでのNGワード設定はほかにもいろいろあるかと思いますがとりあえずいくつかご紹介します。
正規表現って?
正規表現とは、ある「文字の羅列」を数字や記号などの組み合わせを使って表現する手法のひとつです。
例えば:
- 「あ」で始まって「お」で終わる5文字の言葉
- 4桁の数字
- その文字がアルファベットなのかひらがななのかを区別する
など、単純な文字の比較だけでは表現できない構造を正規表現を使って表すことができます。5ちゃんねるブラウザであるChMateアプリでは、この正規表現を使うことで柔軟にNGワードを指定できるようになっています。
ここでは正規表現の文法などの難しい解説などは行っておらず、できあがった正規表現の紹介と動作の解説のみを行っていますので初心者の方もお気軽に読み進めてみてください。
ChMateのNGワードで使える正規表現
ChMateのNGワードで使える正規表現をいくつかご紹介します。正規表現の文法などをご存じでなくてもそのままコピペして張り付けて使うことができますので、NGWordの設定で使えそうなものがあれば試してみてください。
なお、こちらで紹介している正規表現はChMate専用の機能というわけではないため、ChMate以外の5ちゃんねる/2ちゃんねるブラウザであるJane Styleのあぼーん(NGEx)やBB2CのNGワードとしても使えるかもしれません。ただ正規表現の動作には環境による差異により動作しない可能性がある旨ご了承ください。(こちらではChMateのみで動作確認を行っています)
正規表現:日本語が含まれない書き込みをNG(URL含む)
日本語が含まれていない書き込みの正規表現です。半角文字(記号、アルファベット、数字など)にマッチします。
^[\x20-\x7e]*$
半角文字にマッチする=全角文字が含まれていない、ということで、日本語が無い英数字や記号の羅列だけの書き込みなどはまるっとNGワード扱いになります。
この場合、URLだけの書き込みも同じようにNGWordとして扱われてしまうので都合が悪い場合は下記の正規表現などを使ってみても良いと思います。
また、NGWord以外にもNGThread(NGスレッド)にも多少有用です。私はNGスレッドにこの設定を使っています。
正規表現:日本語が含まれない書き込みをNG(URL除外)
半角文字(記号、アルファベット、数字など)にマッチしますが、先頭の文字が「http」であった場合はNGWordの対象から外す正規表現です。
日本語が無い英数字や記号の羅列だけの書き込みをNGにしたいけど、URLのときはNGWordにしたくない場合はこちらを使ってみてください。
^[^(http)][^(//)][\x20-\x7e]*$
ChMateの場合、httpの書き出し以外でもURLと判定されるようなので意図した記述でマッチする場合、しない場合があると思いますが一般的なレスであれば対応すると思います。
正規表現:アンカーが3つ以上記述された書き込みをNG
アンカーが3つ以上記述された書き込みをNGWordにする席表現です。特定のレスに返信コメントをつけるアンカー「>>」が3つ以上記述されている場合にNGになります。
(.*(>>\d{1,4}).*\n*?){3,}
>>100 ほげほげ
>>200 ほげほげ
>>300 ほげほげ
のようなマルチレスがNGされます。
マルチレスが頻繁に行われるような特性のスレッドもあるかと思いますが、単独レス中心のスレッド閲覧がメインで、マルチレスを使った長文荒らし、スパムコメントなどを非表示にしたい場合は有効なNGWordになると思います。
ちなみに正規表現の最後の {3,} の数字部分を変えることで判定するアンカーの最小数を指定することができます。
正規表現:リンク(URL)が3つ以上ある書き込みをNG
リンク(URL)が3つ以上連続して記述された書き込みにマッチする正規表現です。URLの書き込み用途はいろいろあると思いますが、3つ以上のURLが記述されたレスをNGWordにします。
(.*(ttps?://[\w/:%#\$&\?\(\)~\.=\+\-]+).*\n*?){3,}
複数のリンクを使った長文荒らしなどのコメントをNGにできますが、過去ログなどのリンクを指定したスレ立てテンプレにも引っかかってしまうので、必要に応じて使ってみてください。
そういえば画像スレなどにも使えないですね。jpgやmp4とか特定の拡張子のリンクの場合は除外する正規表現とか、需要ありますかね。
正規表現:英数字のみの書き込みをNG
英数字のみのレスにマッチする正規表現です。英単語や数字のみで記号が含まれる場合はNGWordに該当しないためあまり有用ではないと思いますが、一応。
^[0-9a-zA-Z]*$
正規表現:短文(4文字以下)だけの書き込みをNG
4文字以下の書き込みにマッチする正規表現です。
^.{0,4}$
「>>1」だけ、とか「テスト」とか1文字だけなどの短文のレスがNGされます。
それ以外にも幅広くマッチしてしまいますが、大抵の短文の書き込みはあまり意味をなさないので個人的にはこれで十分としてNGに設定してます。
^.{0,5}$
のように「^.{0,数字}$」の数字部分を書き換えると「5文字以下の文字」などにマッチするようになりますので、文字数の指定を行いたい場合はこの数字を変更してください。
正規表現:長文(200文字以上)の書き込みをNG
200文字以上の書き込みにマッチする正規表現です。
.{200}
短文とは逆に、長文荒らしなどをNGワードにする正規表現です。単純に文字数をカウントしているだけなので調整したい場合は200の数字を変更してください。
正規表現:スマホの絵文字をNGワードにする
🤗🤔🤑←こいつらです。
絵文字(顔文字)が含まれた書き込みにマッチする正規表現です。本文中のどこかに絵文字が含まれているレスはすべてNGWord扱いになります。
.*[\x{E000}-\x{F8FF}\x{10000}-\x{FFFFF}].*
絵文字のコードは指定以外にもあるようなので、全部の絵文字が消えるわけではないのですが、とりあえず気に入らない絵文字はNGになってるようなのでこれで良しとしています。
私はNGWordとNGThreadの両方でこのNGワード設定を使ってます。5chの絵文字の書き込みは今のところ邪魔なだけなので。
正規表現:(末尾dなどをNG)ID末尾でまとめてNGIDに
5ちゃんねるでは、書き込んだユーザーの固有IPアドレスから作られた一意のIDを投稿内に掲載する機能があります。
このIDはプロバイダなどのIPアドレスがもとになるため、必ずしもIDが同じ書き込みをした人物が同一人物とは限りませんが、荒らしや特定の人物などを指定してNGにする手段のひとつとして、ChMateではこのIDを使ってNGWordを設定する方法があります。
さらに通常であればIDのNGワード設定は特定の個人を想定して指定するものとなりますが、IDの命名には一定の規則があるため、それらと正規表現を組み合わせることで、「iPhoneからの書き込み」や「公衆Wi-Fiからの書き込み」など、特定の属性のアドレスからの書き込みをまとめてNGワードにできます。
いわゆる「飛行機を飛ばす(スマホの機内モードなどを使ってIPアドレスを強制的に変える)」方法でIDを頻繁に変えてくる荒らしなどの場合、固有のIDでのNGは困難ですが、書き込み元のプロバイダ自体は変えることができないので「MVNOからの書き込みをまとめてNG」のように設定することで対処できます。
.{8}d
上記はID末尾dの書き込み(ドコモのスマホからの書き込み)をNGWordにする正規表現です。ChMateで設定する際は「NGWord」ではなく「NGID」に追加してください。
この正規表現の末尾に書いた「d」のアルファベットを別の文字に書き換えることで、末尾(9桁目の文字)が任意のIDをNGWordにできます。
例えば、末尾0をNGにする場合は以下のようになります。
.{8}0
その他のID末尾についての最新の解説については「BBS_SLIP – 5ちゃんねるwiki」などをチェックしてみてください。
実際のところワッチョイ(妙なニックネーム)などをNGワードに使ったほうが簡単かもしれませんが。一応。
正規表現:複数のワードをすべて含む場合にNGにする
「(.*〇〇〇)」の記号を使ってNGワードを複数記述することで、これらのワードをすべて含む書き込みをNGにすることができます。
(.*NGワード1)(.*NGワード2)(.*NGワード3)
指定したワードのいずれかだけが含まれるような書き込みはNGにならないため、条件を絞ってNGにしたい場合に使用してみてください。
正規表現:複数のワードのいずれかを含む場合にNGにする
「|」記号で区切ってNGワードを複数記述することで、いずれかのNGワードに該当する書き込みをNGにすることができます。
NGワード1|NGワード2|NGワード3
こちらの場合、わざわざ正規表現を使わなくてもひとつずつNGワードを登録すれば済むことですが、正規表現を使うことでひとつの登録項目で複数のNGワードを管理することができます。単独NGワードの登録が増えすぎてしまった時の整理などに。
ChMateで正規表現のNGWordを登録する方法
ChMateで正規表現を使ったNGWordを登録する手順は以下の通りです。
- ChMateの画面右上のメニュー [・・・] をタップし、[NG 編集] をタップします。
- 画面上のタブで [Word] が選択された状態で、画面下の [追加] をタップします。
(※特定のIDやスレッド名をNG対象にしたい場合は画面上のタブから [ID] や [Thread] を選択します。) - 「NGWord追加」の画面で [正規表現] を選択し、文字列のボックスに上記で解説されている正規表現などの記述をそのまま入力します。
- [OK] をタップします。
以上、お読みくださりありがとうございました。
その他にもChMateで使いたいNGWordの正規表現のリクエストなどコメントに書き込んでいただければ更新するかもしれません。
コメント
嘘つき
コピペで使ったらエラーになったぞ
任意の文字列を含まない文章のみを表示する方法が知りたいです。
文章が1行のみの場合は
^(?!.*太郎|次郎).*$
で’太郎’の文字列も’次郎’の文字列も入ってない書き込みは非表示となるのですが、
2行以上の場合はどのように設定すればよろしいのでしょうか。
全6行のとりわけ特徴のない文章があって、
a) 1-6行目のどこかの行に文字列’太郎’もしくは’次郎’があれば表示する。
b) 1-6行目のどこの行にも文字列’太郎’も’次郎’もなければ非表示にする。
たとえば、このような場合を想定しています。