ユーザーが入力した値や請求書の情報から、製品IDやメールアドレスなどの文字列を取り出したいことってありますよね? このような場合、Regexp関数を使うと正規表現を使ってパターンにマッチする文字列を取り出すことができます。
この記事では、Regexp関数の使用方法を紹介します。
正規表現パターンの記述
文字列の中から正規表現を使って部分文字列を取り出すためには、グループというものを使います。例えば、「山田 太郎」という文字列があったとします。姓と名の間は全角空白1文字とします。ここから姓と名を取り出すにはどうすればよいでしょうか?
それでは、試してみましょう。まず、Regexp関数をダブルクリックして、正規表現ダイアログを開きます。ダイアログの「正規表現」ボックスに、以下のパターンを入力します。
パターンの中の括弧と括弧の間は全角空白1文字です。
ここで「.+」はどのような意味かというと、1文字以上の文字という意味です。何となくピンときたでしょうか? そう、このパターンは
(1文字以上の文字)+全角空白1文字+(1文字以上の文字)
となり、「山田 太郎」にマッチしそうですよね。
このパターンの中の () で囲まれた部分をグループと呼びます。後はこのグループを取り出すことが出来れば、最初のグループなら姓の部分を取り出せますし、2番目のグループなら名の部分を取り出せるということになります。
グループの出力
正規表現パターン内で括弧を使用してグループに分けたら、後は取り出すグループを指定するだけです。上記の場合、姓の"山田"を出力するには、グループの番号である"1"を「出力するグループ」プロパティに設定します。
先ほどの正規表現ダイアログの左下のその他のプロパティペインで「出力するグループ」プロパティを設定できます。
正規表現パターンのテスト
正規表現はあまり簡単ではないので、あれこれと試しながらパターンを考えることになると思います。正規表現ダイアログでは簡単に正規表現を試すことができます。
まず、正規表現ダイアログの「入力文字列」ボックスに評価対象となる文字列を指定します。今回は"山田 太郎"と入力してから、右側中ほどにある「テスト」ボタンをクリックします。
すると、「実行結果」ボックスに"山田"が表示されます。先ほど「出力するグループ」プロパティに"1"を設定したので、最初のグループである"山田"を取り出すことが出来ました! 「出力するグループ」プロパティに"2"を設定してテストすると"太郎"を取り出すことができます。
注意
マッチした全体の文字列を出力するには、「出力するグループ」プロパティに0を設定します。
OKをクリックすると、Regexp関数のプロパティが自動的に設定されます。
正規表現のパターンを考えるのはクイズみたいで少しとっつきにくいかもしれませんが、Regexp関数を上手に使えば、メールアドレスからユーザー名を抽出したり、ウェブフォームに入力された請求先住所から郵便番号、都道府県や市町村を抽出したりすることができます。
その他のガイド
RegexpMatch関数ガイドでは、正規表現ダイアログに関する以下の設定方法を確認できます。
- 大文字と小文字の一致
- サンプルパターンの使用
- 正規表現パターンの動的設定