タブ振り分けルール、検索で使用可能な正規表現について簡単に解説します。
正規表現とは、いくつかの文字列をひとまとめにして表現する方法です。 例えば、「WindowsXP」「Windows XP」のように、同じようなキーワードでも、表記に「ゆれ」がある場合、複数のルールを作るよりも、正規表現を使った書き方にすると、ひとつのルールで簡潔に記述することができます。
いくつかの文字列をひとまとめにして表現するのが正規表現ですが、このときに使う特別な意味を持たせた文字を「メタ文字」といいます。次の文字は、正規表現では特別な意味を持つので、その文字自体を表現したいときは直前に「\」を置く必要があります。
. ^ $ [ ] * + ? | ( ) \
「\」はメタ文字の特別な意味を打ち消す時に使います。
「[B!]」という単語を表現したいときは、 [ ] それぞれが「メタ文字」となっているので、「\[B!\]」と書くのですね。
それでは、どのメタ文字がどういった意味を表すのかをひとつずつ説明していきます。
「.」は、何でもいい1文字を表します。
あれは.ですと書いた場合、「あれは車です」「あれは鳥です」「あれは1です」などに該当します。
「^」は行の先頭、「$」は行の最後を表します。
^爆発と書いた場合、「爆発しました」など、「爆発」で始まる行に該当します。 「ガス爆発」には該当しません。
ありがとう$と書いた場合は、「ありがとう」で終わる行に該当します。 「ありがとうございました」には該当しません。
これらの3種類のメタ文字は、直前にある文字の繰り返しを表します。* が「0回以上の繰り返し」、+ が「1回以上の繰り返し」、? が「0回または1回の繰り返し」となります。少しずつ違いますので、違いを理解して使い分けてください。また、 ワイルドカードとは効果が異なりますので注意してください。具体例を見ていきましょう。
おー*いと書いた場合、ー の0回以上の繰り返しになるので、「おい」「おーい」「おーーい」などが該当します。
おー+いの場合、ー の1回以上の繰り返しになるので、 「おーい」「おーーい」などが該当します。「おい」は該当しません。
おー?いの場合、ー の0回または1回の繰り返し、つまりあるかないか、ですので「おい」「おーい」は該当しますが「おーーい」は該当しません。
文字列を | で区切った場合、その文字列のいずれかであることを表します。
Twitter|ついったー|ツイッターと書いた場合は、「Twitter」「ついったー」「ツイッター」を含む場合に該当します。
文字を [ ] で囲った場合は、その中のどれか1文字であることを表します。
あれは[鳥車]ですの場合、「あれは鳥です」「あれは車です」に該当しますが、 「あれは1です」は該当しません。
この表現ですが、もし「すべての半角アルファベットを指定したい」というような場合はどうすればいいでしょうか。
[ABCDEFGHIJKLMNOPQRSTUVWXYZ]と書くのは非常に面倒ですよね。 なので、- を使って、[A-Z]のような書き方で、範囲を指定することもできます。
[A-Z]とした場合は、任意のアルファベット1文字を表します。
[0-9]とした場合は、任意の数字1文字を表します。
[A-Z0-9]とした場合、任意のアルファベット1文字か任意の数字一文字を表します。
また、[ ]内の先頭で ^ を使用すると否定になり、「指定した文字ではない」ということを表します。
[^A-Z]とした場合は、半角のアルファベットでない1文字になります。
[^0-9]とした場合も同様に、半角の数字ではない1文字になります。
( ) で文字をくくると、それをグループとし、一つの文字として扱います。
(どん)+と書くと、「どん」をひとつの文字として扱い、その1回以上の繰り返しになりますので、「どん」「どんどん」「どんどんどん」等に該当することになります。
明日(ぼく|わたし|おれ)は出かけますと書いた場合、()の部分が「ぼく」「わたし」「おれ」のいずれかということになり、それを一つのグループとして扱うので、「明日ぼくは出かけます」「明日わたしは出かけます」「明日おれは出かけます」に該当します。
ルール作成の簡易化のため、大文字・小文字は区別しません。
オフについて考えられるキーワードを | で繋いでいきます。
オフ|おふ|off
普通の人にはあまり関係ないですが、例題と言うことで。
キーワードは、まとめサイト更新情報が[Twnまとめ]、dev更新情報が[TwnDev]です。 従って、これらの両方を捕捉する場合は次のようになります。
\[Twn(まとめ|dev)\]
ポイントは次の部分です。
nicovideo\.jp|youtube\.com
.はメタ文字になりますので、\を置いてメタ文字の効果を打ち消す必要があることに注意してください。 URL短縮されているものはどうするの?と思う人もいると思いますが、振り分けルールで「リンク先URLも検索する」にチェックをしておくと、短縮URLを展開した結果の文字列も検索対象になりますので、これでOKです。
あるキーワードを補足対象にしたい、しかしフッタなどに含まれている場合は除外したい。このような場合でも正規表現で処理できてしまいます。
(?<!\()株(?!\))
(?<!\() により、「株」の前に「(」がつかないことを、(?!\)) により「株」の後に「)」がつかないことをそれぞれ保証します。
(?<!xxxx)と(?!xxxx)は否定の文法です。今回は、xxxx部分に「(」「)」をマッチさせたいので、メタ文字効果を打ち消す\と共に「\(」「\)」をそれぞれ当てはめました。 除外ルールの指定ができるようになりましたので、マッチルールに「株」を、除外ルールに「(株)」を指定することでも実現できます。
(TweenクラスはFlash製作で使われるライブラリでTwitterクライアントのTweenとは無関係です。)
Tween(?!クラス)(?!クラス) により、Tweenのあとに「クラス」が続かないことを保証します。 除外ルールの指定ができるようになりましたので、マッチルールに「Tween」を、除外ルールに「Tweenクラス」を指定することでも実現できます。
軽く説明してみましたが、うまく使えばとても便利なものです。今まで知らなかったという人は是非試してみてください。
次のサイトの記述を参考にさせていただきました。ありがとうございます。
こちらのWebページでいろいろなパターンの動作確認ができます。ただしすべてのメタ文字をサポートしているわけではないようです。 .NET 正規表現チェックツール
正規表現をテストできるツールを作成しました。 見ればわかると思うので使い方の解説は特に行いません。
Tweenで使える正規表現は、.NET Framework 2.0のクラスライブラリにあるSystem.Text.RegularExpressionsで使える正規表現そのものです。 完全な仕様についてはこちらを参照してください。
単一条件 | 複合条件 ID文字列 | 複合条件 書き込み内容 | |
^(行頭) | ID文字列の先頭と書き込み内容の先頭の両方 | ID文字列の先頭 | 書き込み内容の先頭 |
$(行末) | ID文字列の末尾と書き込み内容の末尾の両方 | ID文字列の末尾 | 書き込み内容の末尾 |
[PageInfo]
LastUpdate: 2009-11-17 10:41:55, ModifiedBy: kiri_feather
[Permissions]
view:all, edit:members, delete/config:members