【Node.js24.x】String::matchAll()メソッドの使い方
matchAllメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
matchAllメソッドは、文字列に対して正規表現パターンを適用し、一致するすべての部分文字列を検索・取得するために使用されるメソッドです。このメソッドは、指定された正規表現が対象の文字列内で見つけることができる、全てのマッチ結果を順次返すイテレーターを生成します。
各マッチ結果は「マッチオブジェクト」として提供され、一致した部分文字列、正規表現のキャプチャグループによる抽出内容、一致箇所が元の文字列のどの位置から始まるかを示すインデックスなどの情報を含んでいます。
matchAllメソッドを使用する際には、正規表現にグローバル検索フラグ('g'フラグ)を指定することが必須です。'g'フラグがない正規表現が使用された場合、メソッドはエラーを発生させるか、期待通りの動作をしない可能性がありますので注意が必要です。
返されるイテレーターは、for...ofループやArray.from()メソッド、あるいはスプレッド構文(...)などを用いて、個々のマッチオブジェクトを繰り返し処理したり、配列としてまとめて取得したりすることができます。例えば、ウェブページから特定の形式のリンクを全て抽出する場合や、ログファイルからエラーメッセージを複数箇所見つけ出す場合などに非常に有用です。これにより、文字列の中からパターンに合致する情報を効率的に収集することが可能になります。
構文(syntax)
1const text = "apple banana apple orange"; 2const pattern = /apple/g; // 'g' (グローバル) フラグは必須です 3 4const matchesIterator = text.matchAll(pattern); 5 6for (const match of matchesIterator) { 7 console.log(`Matched: ${match[0]}, Index: ${match.index}`); 8}
引数(parameters)
regexp
- regexp: RegExp: マッチングに使用する正規表現オブジェクト
戻り値(return)
RegExpStringIterator
指定された正規表現に一致するすべての部分文字列を、イテレータとして返します。