earthpg:GAS専門のプログラミングスクール

3分でわかる!GASのmatch関数の使い方

GASのmatch関数ってどうやって使うんだろう?僕にはちょっと難しくて…。
猫男
猫男
catman
catman
よし、catmanが「GASのmatch関数」について解き明かしたる。

GASでmatch関数を使う基本

GASのmatch関数は、与えられた文字列が正規表現にマッチするかどうかを調べる関数だ。

基本的な使い方

まずは、簡単な例から始めよう。


function matchExample() {
  const text = "こんにちは、世界!";
  const pattern = /こんにちは/;
  const result = text.match(pattern);
  Logger.log(result); // 結果: ["こんにちは"]
}

この例では、match関数を使って「こんにちは」という文字列が存在するか確認している。

結果は配列で返され、配列に文字列が含まれている。

match関数の戻り値

match関数は、マッチした場合には配列を、マッチしなかった場合にはnullを返す。

 

GAS matchの変数の使用

変数にパターンを入れて、それを使うこともできるの?
猫男
猫男
catman
catman
もちろんできる。変数にパターンを入れて、マッチパターンを自由に変えることができるのさ。

function variableMatch() {
  const text = "サンプルテキスト";
  const pattern = new RegExp("テキスト", "g");
  const result = text.match(pattern);
  Logger.log(result); // 結果: ["テキスト"]
}

改行や複数行にわたるマッチ

正規表現には改行や複数行対応のオプションがある。それを使ってみよう。

改行や複数行の文をうまくマッチさせるにはどうすれば?
猫男
猫男
catman
catman
改行や複数行に対応したいときは、オプションに注意だ。

function multiLineMatch() {
  const text = "これは\n複数行の\nテキストです";
  const pattern = /^複数行/m;
  const result = text.match(pattern);
  Logger.log(result); // 結果: ["複数行"]
}

完全一致や含まれない場合の処理

  • 完全一致を確認したいなら、^$を使う。
  • マッチしないパターンが必要なときは、nullを想定してコードを書く。

function exactMatch() {
  const text = "完全一致テキスト";
  const pattern = /^完全一致テキスト$/;
  const result = text.match(pattern);
  Logger.log(result); // 結果: ["完全一致テキスト"]
}

function notMatch() {
  const text = "不一致";
  const pattern = /一致しない/;
  const result = text.match(pattern);
  Logger.log(result); // 結果: null
}

複数一致を検索するにはmatchAll

複数一致を求めたいときは、matchAllメソッドを使おう。


function multipleMatches() {
  const text = "赤リンゴ、青リンゴ、緑リンゴ";
  const pattern = /リンゴ/g;
  const matches = [...text.matchAll(pattern)];
  Logger.log(matches); // 結果: [["リンゴ"], ["リンゴ"], ["リンゴ"]]
}
同じ文字列が複数あると、全部見つけるのが簡単にできるんだね!
猫男
猫男
catman
catman
その通り。マルチマッチはGASでの文字列操作の強力な武器だ。

練習問題

それでは、GASのmatch関数を使って練習してみよう。

  1. 次の文字列「ルビー、パール、ダイヤモンド」から「パール」を見つけてみよう。
  2. 複数の「猫」という単語を含む文字列から、「猫」を探してみよう。

解答・解説


// 問題1の解答
function findPearl() {
  const text = "ルビー、パール、ダイヤモンド";
  const pattern = /パール/;
  const result = text.match(pattern);
  Logger.log(result); // 結果: ["パール"]
}

// 問題2の解答
function findCats() {
  const text = "猫と犬とまた猫";
  const pattern = /猫/g;
  const matches = [...text.matchAll(pattern)];
  Logger.log(matches); // 結果: [["猫"], ["猫"]]
}

これで、GASのmatch関数を使いこなせるはずだ。

それぞれのメソッドやオプションを駆使して、GASをもっと楽しく使ってみてくれ!