よくある正規表現の間違い

よくある正規表現の間違い Internet Explorer や Opera は使わないこと!




キャラボットの、自分宛ポストへの返信&自分のタイムラインへの返信は、共に
登録されたキーワード(反応語句)を、上から順番に下まで辿って行き
該当する言葉を探して返事をするようになっています。

ですので、正規表現を使用して登録している場合、正規表現に誤りがあると、そこに引っかかってしまい
先へ(下へ)進むことが出来なくなり、結果、誤作動や不具合が生じることになります。
正規表現を使うときには、慎重に、よく確認して、登録するようにして下さい。



キャラボットのキーワード登録でよく見られる正規表現の間違い



↓間違いの無い基本の形。これを元に色々と間違いを再現していきます

seki12.jpg




まず、【|】(本来は半角。このページでは半角だと表示されないので全角)を間違えて入れてみます

たいてい最後に 入って(消し忘れて?) いることが多いようです。
この例ではよくある例として( )内の最後に入れてますが、( )内のどこに間違えて入れても結果は同じです。

seki13.jpg

おはよう 以外の、関係ないものまで一致してしまいました。
もしも、この間違っている正規表現が、登録キーワードの一番上にあったときには
なんでもかんでもみんな、おはよう 用の返信内容で返事することになり
会話が頓珍漢なことになってしまいます。



次は先頭の【 . 】が入ってない間違い

seki14.jpg

とっても分かりやすくエラーです。
ボットの動きも返事があったり無かったり、不具合が生じます。



次は後ろの【 . 】が抜けている

seki15.jpg

関係ないものまで一致してしまいました。
この、間違えている正規表現より優先順位が上のキーワードには影響ありませんが
これより優先順位を下に登録しているキーワードには影響が出てしまうので
おはよう 用に設定した返事ばかり投稿されることになります。



次は先頭の【 * 】が入ってない

seki16.jpg

名前ちゃんは全く一致してませんが、それ以外は一致してます
が、先頭に【 * 】が入ってなくてもキーワードには一致したこれが

後ろに【 * 】が入っていないと

seki17.jpg

とたんに1文以外、全部無視します。



次に半角であるべき【 ( ) 】を全角で書いてしまった
※ この例では、最後のカッコのみを全角にしています

seki18.jpg

やっぱり、とっても分かりやすくエラーです。

※ 【 ( ) 】のどちらかが抜けても、同じようにエラーになります。



次に先頭の【 .* 】 を 【 *. 】と書いてしまった

※ ブラウザが違うので画面の見え方が違います。
seiki100.jpg

とても分かりやすくエラーです。


次に後ろの【 .* 】 を 【 *. 】と書いてしまった

※ ブラウザが違うので画面の見え方が違います。
seiki101.jpg

全てが一致してしまいました。



その他、ほんのちょっとの書き間違いで簡単にエラーになったり
誤作動になったりしますので、正規表現を作るときには
正規表現チェッカー(便利 app リンク 参照)でチェックしつつ作成することをオススメします。




スペースに注意!


正規表現で気がつきにくい間違いに、余計なスペースがあります
コピー&ペーストしたときなどに紛れ込むことが多いようですので注意して下さい


例えば、↓ですが、一見どこも間違いが無いように見えます

aki01.jpg


しかし、どれも一致していません。 ですので、ボットは反応しません

なぜなら

こうなっているからなのです

aki02.jpg


メタ文字の.*の後に、余計なスペースが入っているのです
この例では半角スペースですが、全角スペースでも結果は同じです
メタ文字の.*の前にスペースが入っていても同じ結果になり

aki03.jpg


画像はありませんが、( )や|などのメタ文字と語句の間に入ったスペースも
入っている箇所によりますが、スペースが入ってる箇所のキーワードは
反応しない可能性があります


リプライが変だけど、正規表現は間違ってないように見える…
パッと見、間違いが無いように見えるのが、余計なスペースの間違いです。
ひとつひとつ、手間はかかりますが、確認してみることをオススメします。


しかし

スペースの存在を忘れちゃダメなときもあります。


メタ文字の.*を使用しない正規表現を登録する場合

自分宛ポストへの返信一覧に (ダメ|だめ|駄目) という正規表現を登録したいとします。

通常、自分宛のリプライは

@botのツイッターアカウント 本文

という形になっています。

デフォルトでは、ツイッターアカウントと本文の間に半角スペースが入っているので
(ダメ|だめ|駄目) という形では、.*が入っていないため、半角スペース及び
botのツイッターアカウントを読み取らず、反応を示しません。

キーワード登録した言葉だけに反応させたいのであれば

@botのツイッターアカウント.?(ダメ|だめ|駄目)

のような形にすれば、キーワード登録した言葉だけに反応させることが出来ます。



おまけ


半角顔文字をキーワードに混ぜて登録するとこうなります

omake.jpg




どうしても、どうしても、半角顔文字が使いたい場合には

 .*\(.?‘д‘⊂彡☆\)\)Д´\) .*

のように、メタ文字の前にバックスラッシュ\を入れるようにすればエラーは出ません。
その場合には、テスターやチェッカーを使用してシッカリ作り込んで下さい。


031.jpg
※この画像では、バックスラッシュが ¥ になっていますが \ が ¥ に見えているだけです。












  • 最終更新:2012-02-12 20:18:51

このWIKIを編集するにはパスワード入力が必要です

認証パスワード