前回の記事「Slackbotの挨拶のパターンに対応する」では正規表現を用いて様々なパターンに対応しました。

前回使用した正規表現だけでも多くのパターンに対応することが可能でしたが、以下の場合の省略ができません。

・「やあ、こんにちは」の「やあ、」を省略可能にする場合
一時ずつ省略とした場合、「やこんにちは」、「あこんにちは」でもOKとなってしまいます。「\S*」、「.*」の記号を使用した場合も省略は可能ですが、条件に当てはまればどんな文字でも記述可能となってしまいます。

そこで登場するのが正規表現のグルーピングです。文字列をグループ化することで「やあ、」の部分だけ省略可能となります。

PythonでのSlackbot作成の基本については「SlackbotをPythonで作成しよう」をお読みください。

Slackbotにおける正規表現のグルーピング

グルーピングする場合は以下の通りです。
“()”で括ることでその間の文字列をグループすることができます。

◆記述内容

◆実行結果
「やあ、」の省略ありなし

引数にはグループの値が入ります。

◆記述内容

◆実行結果
グループの文字列を表示する

関連記事>>正規表現のグループの活用方法

Slackbot+正規表現で複数のグループを使用する

複数のグループを使用したい場合はその数だけ追加で引数を指定する必要があります。
引数は省略できません。

グループ化することで、以下のような記述も可能です。

◆記述内容

「|」はORの意味になります。
上記の例では「こんにちは」、「コニチハ」のどちらでも応答してくれます。

◆実行結果
二つのあいさつ両方に反応する

条件を加えれば言葉によって応答を変えることも可能です。

◆記述内容

◆実行結果
あいさつの種類によって応答を切り分ける

以上、正規表現のグルーピングについてでした。

Pythonと正規表現の基本>>Pythonと正規表現の基本

SlackbotまとめTOP>>Slackbotの作り方マニュアル〜Python編〜

◆関連記事
Slackbotで今日の天気を確認する〜Python・Node.jsでのBot開発〜
Slackbotに音声付きで応答させる〜PythonでのBot開発〜
Pythonの正規表現チェッカーを作成してみました