2011/12/14

【Janetter】正規表現を駆使してタイムラインをフィルタリングする方法

このエントリーをはてなブックマークに追加
備忘録です

今回は「Janetter」というTwitterクライアントのお話です。
Janetterには「NGワード」という機能があり、TLに流れるツイートを”文字”および”正規表現”でフィルタリング(除外)することができます。
この「正規表現」というのは非常に便利で、上手く使うことができればTLから邪魔なノイズを完全に消し去ることができます。

例えば正規表現を使えば
  • 定期ポスト・自動ポスト
  • 非公式RTの連鎖
  • 無言RT
  • ハッシュタグを乱用したツイート
  • 「wwwwwwwwww」などの芝
などなど、この手の邪魔なツイートをパパっと非表示にすることができるんです。
…しかし、正規表現は記述の方法が(とてつもなく)難解なため、非プログラマーには呪文にしか見えないです。というわけで適当にコピペして使ってください!

ちなみに私は正規表現が大嫌いです^^^^^
もっと正確な記述方法があったらコメントかTwitterのリプライで教えてください!

正規表現についての簡単な説明

正規表現というのは「文字列の集合」「一つの文字列で表現する方法」です。

はい、何言ってるか分からないですよね。
知りたい人はググってください!

Janetterで正規表現を使う方法
まずJanetterの設定画面を開いてください。
タブに「NGワード」ってありますよね?そこです。
そこにどんどんキーワードをぶち込んでいきます。

チェックボックスは全てチェック済みにしておきましょう

定期ポスト・自動ポストを除外
[[【](定期.*|自動.*)[]】]
これでほとんどの定期ポスト・自動ポストは消えます。

非公式RTの連鎖を除外
(RT|QT).*\s*.*(RT|QT).*\s*.*
これだと「2回以上連鎖した非公式RT・QT」が除外されます。
「3回以上連鎖した~」にマッチさせたい場合は以下のように記述してください。
(RT|QT).*\s*.*(RT|QT).*\s*.*(RT|QT).*\s*.*

無言RTを除外
^(RT|QT)(\s|:|:\s)?@\w+
こんな感じ→「RT @〇〇〇〇 ぺろぺろぺろ」の無言RTが除外されます。

2人以上に送られたリプライを除外
@\w\s*.*\s*@\w
「@aaa @bbb @ccc おはよー!」みたいなツイートが消える…はず?

3つ以上のハッシュタグを使っているツイートを除外
(#|#).+\s*.*(#|#).+\s*.*(#|#).+
最近ハッシュタグの乱用が目立つので…

なんとなく鬱陶しいハッシュタグの除外
(#|#).*((RT|rt)|フォロ.?ー|)
この正規表現にマッチするのは以下のようなハッシュタグです。
  • #私と絡みたいけどなんか絡めない人rt
  • #RTした人全員フォローする
  • #フォロワーさんが家族に例えてくれる
個人的に苦手なので弾いてます^^;


最後に

おそらく私の記述は正確ではないです(正規表現なんて数時間しか触れてないですし…)
でも一応フィルタリングには成功しているんで、興味がある方は是非コピペしてみてください!

あ、ちなみにJanetter用の記事ですが、Tweenなどの正規表現に対応したクライアントなら共通して使えると思います。