以下4つを使って一致する文字列を正規表現で探してみます
- match:見つかった文字列を返す
- exec:見つかった文字列を返す
- test:見つかったらtrue, 見つからなかったらfalseを返す
- search:見つかった位置を返す
matchとexecの違いについては g をつけて試してみました
コード.gs
function get_results(){//一致した文字列が配列に返ってくる
var str = "abc123";
var pattern = /123/;
var mat = str.match(pattern);
var exe = pattern.exec(str);
var tes = pattern.test(str);
var sea = str.search(pattern);
Logger.log([mat, exe,tes, sea]);
}
|
意訳この機能がやること 探索対象の文字列を用意する(この中から特定のパターンに一致する文字列を探したい) 探索する文字列のパターンを用意する(正規表現で) 一致した文字列をそのまま返して 一致した文字列をそのまま返して 一致した文字列があればtrue, なければfalseを返して 一致した文字列の開始位置を返して ログに出す |
matchとexecの違いは?
var pattern = /123/;の場合は違いはない
var pattern = /123/g;
にすると結果が異なる
matchは一致するパターンをすべて返す
execは一致するパターンを一つずつ返していく
コード.gsfunction get_results() {
var str = "abc123abc123";
var pattern = /123/g;
var mat = pattern_match(str, pattern);
var exe = pattern_exec(str, pattern);
Logger.log([mat, exe]);
}
function pattern_match(str, pattern) {
var array = [];
var results = str.match(pattern);
for (var i = 0; i < results.length; i++) {
array.push(results[i])
}
return array;
}
function pattern_exec(str, pattern) {
var array = [];
while (pattern.exec(str) !== null) {
array.push("発見!次の探索開始位置は" + pattern.lastIndex);
}
return array;
}
| 意訳この機能がやること 探索対象の文字列を用意する(この中から特定のパターンに一致する文字列を探したい) 探索する文字列のパターンを用意する(正規表現で) matchで一致する結果を取得して execで一致する結果を取得して ログに出す この機能がやること 結果の入れ物を用意して strの中にpatternに一致する文字列をすべて取得する 見つけた数だけ以下を繰り返す arrayに見つけた文字列を追加する すべて追加されたarrayを返す この機能がやること 結果の入れ物を用意して strの中でpatternに一致する文字列がなくなるまで探す 見つけたら次の探索開始位置とともにarrayに追加する すべて追加されたarrayを返す |
参考
String.prototype.match() - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/match
RegExp.prototype.exec() - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec
RegExp.prototype.test() - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test
String.prototype.search() - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/search

