忍者ブログ

[PR] []

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

正規表現:reply_pattern.php(2) [twitter bot]

サンプルで用意してくれてる、上から3つ目までは、前回までの記事で説明が出来た。
次。
//「◯◯は好き?」という発言を受け取ると「◯◯おいしいです」と返す正規表現のサンプルです
//ただし「◯◯」の前には空白か「、」か「。」を入れないと「は好き?」以前の文章が全て繋がって表示されます
"([^s、。]+?)は好き?"=> array(
"$1おいしいです",
),
これ。

「は好き?」の前に([^s、。]+?)がある場合に反応するという。
()でくくってあるので、1つのグループってことですね。
[]でくくられてるのは、その中のどれか1文字ってことでしたが、
サルにもわかる正規表現入門によると、[]内で^は意味が違うと書いてある。
続く文字以外という意味みたいなのでsも否定された。
sが前にないといけないのに否定?

なんか処理のためなんだろうかと(見当違いな)想定をしつつ、とりあえず先をみていく。

()内の後半+?
+は1回以上の連続する文字
?は0または1回だけの文字

……(´・∀・`)?

これが嫌なんだ…orz
わからんのでいろんなサイトを見ると、やっぱりサルにもわかる正規表現入門にて+と?が分かりやすく書いてあると思う。
+は、直前の文字が1つ以上=最低でも1つないといけない。
直前の文字とは[^s、。]
つまりsでもでもでもないもの。
ああ!なるほど、そういうことか。
除外することによって、区切ってるというわけなんですね。
で、そのでもでもないものが1文字以上なので、「s、。」のどれでもない文字で構成されてる単語、たとえば「ケーキ」とか「あめ」とか「学校」とか「coffee」とかに反応する。

で、最後の?ですが…
「直前の文字がまったく無いかひとつだけ」。
直前の文字とは+で、+が直前の文字が1つ以上なので…
たぶん、何文字か続く任意の単語の最後の一文字がどうか、ってことだと思うんだけど、どうもよく分からない。

正規表現チェッカーでも、?はあってもなくても結果が変わらないのです。
勉強していくうちに分かるかもしれないので、とりあえず触らずに。

「○○は好き?」だとちょっと使いにくいので、
「○○、好き?」「○○って好き?」「○○とか好き?」「教えて!○○、好き?」に対応させるためにこうしてみた。
"([^s、。!]+?)(は|、|って|とか)好き?"=> array(
"$1おいしいです",
),




これを応用したい場合。
質問掲示板でこんなの見かけました。
"つ([^s、。]+?)"=> array(
"$1ありがとう。",
),
「つジュース」ってメンションした場合、「ジありがとう。」とリプライしたそうです。
これに対して?を削って
"つ([^s、。]+)"=> array(
"$1ありがとう。",
),
という回答が示され、意図したとおり「つジュース」で「ジュースありがとう。」とリプライが得られたようです。
?が付くことで、最短一致となり、「つ」の次の1文字だけを拾ったんだと解釈できます。
直前の文字が0個か1個ってことだからでしょうか。

でもこのままだと、
「つまり、~」ってメンションには「まりありがとう。」って返しちゃうと思うんです。
また、掲示板の例から「あついー」に「いーありがとう。」と。
これを防ぐために、「つ」の前にスペースがある場合に限定、さらに、「つ」の後ろにもスペースを入れるようにして
「つ ジュース」と送ってもらうようにする。
それがこれ。
"sつs([^s、。]+)"=> array(
"$1ありがとう。",
),

…で、いいと思います。


そして最後の
//「会話終了」を含む発言を受け取るとリプライを返さなくするサンプルです
"会話終了"=> array(
"[[END]]",
),
場合によってはEasyBotter.phpを直さなければならないようですが、難しいことではないようです。
会話終了っていうのをまたね!に置き換えたり
正規表現で「またね!」「バイバイ」「おやすみ」どれでも会話終了するようにも出来るはず!


ってことで、デフォルトをちょこっとアレンジする程度は出来るようになった、と、思います。


---広告---
大人買いしたいときに!
中古漫画全巻販売ドットコム
PR

最新記事

オンマウスでタイトル~

ブログ内検索

オススメサーバなど。

はやくて、やすくて、カンタン。
全てが揃った究極のレンタルサーバ、☆さくらのレンタルサーバ
 
ロリポップのドメインは85種類!
きっとお好みのドメインが見つかるはず!
ロリポップはドメイン持ってる人が非常に使いやすいかと。
aaa.jpを取得して、web.aaa.jp、blog.aaa.jp、mail.aaa.jpみたいに、使い分けが出来て便利です。
メアドもたくさん作れて、転送設定なんかもできて良い。
実績から見ても信用できるし、イチオシです。
 
で、ドメイン取るならココ。
時々新規超安キャンペーンやってます。
ムームードメイン

 
お手軽価格で使いがい、あります。
月額250円~で、容量5GB、独自ドメイン、CGI使用、商用利用可能!
FC2レンタルサーバーLite
 
A8.net

プロフィール

HN:hrn
一言:ブログタイトル迷走中。
php初心者/htmlとcssならちょっと得意/javascriptは苦手。必要なことだけ調べるのでいつも遠回り、余計なことばかりしている。
琉金とポリプ飼ってます
透明水彩ってイイヨネ。
 
アクア用品なんかのレビューでは、アフィリエイトリンクつけてるものがあります。
記事が参考になったら、ここから買ってくれると嬉しい。