以下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