【GAS】matchメソッドの使い方・正規表現
Google Apps Script(GAS)を利用していると、配列から特定条件に当てはまる文字列を抽出したり、条件に該当する文字列を数えたりといった処理を行いたいことがあります。
そのようなシーンでは、正規表現を使ったmatchメソッドの活用が便利です。この記事ではmatchメソッドの使い方と正規表現の活用方法をご紹介します。
matchメソッドとは
matchメソッドとは、文字列(String)型のオブジェクトの用意されているメソッドで、その文字列に特定の文字が含まれているかどうかを検索することができます。
同じような文字列型オブジェクトのメソッドとしては、testメソッドやexecメソッドが用意されています。下記の記事で詳しく解説しているのでぜひご覧ください。
matchメソッドの使い方
String.match(regexp)
matchメソッドは、正規表現を引数としてシンプルに記述できます
let regexp = new RegExp(/あいう/)
let result1 = "あいうえお".match(regexp);
console.log(result1);
// result1
[ 'あいう’, index: 0, input: 'あいうえお’, groups: undefined ]
regexpがRegExpではなかった場合、自動でRegExp(= new RegExp(regexp))に変換して使用して行われます。(実行結果はresult1と同じ)
let result2 = "あいうえお".match(/あいう/);
console.log(result2);
// result2
[ 'あいう’, index: 0, input: 'あいうえお’, groups: undefined ]
matchメソッドの戻り値
matchメソッドは、グローバルフラグ(後述)を指定しなければ連想配列を含む配列が戻り値となります。
let result1 = "あいうえお".match("あいう");
console.log(result1); // ['あいう', index: 0, input: 'あいうえお', groups: undefined]
引数に使った条件と検索文字列のコピー(input)の他、下記の情報を返してくれます。
・index:条件指定した文字列の検索結果が見つかった番号(「0」なら最初の文字)
・groups:名前付きキャプチャグループのオブジェクト(キーは名前、値はキャプチャグループ、定義されていない場合はundefined)
また、一切引数を与えずにmatch() メソッドを使った場合は空の文字列要素を持つArrayオブジェクト([“"])が得られ、条件にする文字列がない場合は「null」が戻り値となります。
let regexp3 = new RegExp(/かきく/)
let result3 = "あいうえお".match(regexp3);
console.log(result3);
let result4 = "あいうえお".match();
console.log(result4);
// result3
null
// result4
[ ", index: 0, input: 'あいうえお’, groups: undefined ]
オプションフラグ(d/g/i)
オプションフラグを付けることによって、検索条件を指定することも可能です。主要なフラグは下記です。
フラグ | 機能 |
---|---|
d | 一致した文字列の位置を生成 |
g | グローバル検索(一致する条件を複数回検索) |
i | 大文字・小文字を区別しない |
let result5 = "aB2AAAb3bbAb4".match(/Ab\d{1}/d);
console.log(result5);
let result6 = "aB2AAAb3bbAb4".match(/Ab\d{1}/g);
console.log(result6);
let result7 = "aB2AAAb3bbAb4".match(/Ab\d{1}/i);
console.log(result7);
// result5
[ 'Ab3’, index: 5, input: 'aB2AAAb3bbAb4’, groups: undefined,
indices: [ [ 5, 8 ], groups: undefined ] ]
// result6
[ 'Ab3’, 'Ab4’ ]
// result6
[ 'aB2’, index: 0, input: 'aB2AAAb3bbAb4’, groups: undefined ]
まとめ
matchメソッドと正規表現の使い方についてご紹介しました。ぜひ活用してみてください。
より詳しい正規表現の使用方法は下記の記事でも詳しく解説しています。