JavaScript正規表現のグループ抽出
JavaScriptにおける正規表現のマッチンググループへのアクセス
マッチンググループとは、正規表現のパターン内で括弧 (()
) で囲まれた部分を表します。これらのグループは、マッチした文字列の一部を抽出するために使用されます。
match() メソッド
- 基本的な使い方
const regex = /pattern/;
const string = "matching string";
const matches = string.match(regex);
- マッチンググループのアクセス
matches
配列のインデックス 1 以降にマッチンググループの値が入っています。- インデックス 0 には、全体一致した文字列が入っています。
例
const regex = /(\d{4})-(\d{2})-(\d{2})/;
const string = "2023-12-31";
const matches = string.match(regex);
console.log(matches); // ["2023-12-31", "2023", "12", "31"]
exec() メソッド
const regex = /pattern/;
const string = "matching string";
const match = regex.exec(string);
const regex = /(\d{4})-(\d{2})-(\d{2})/;
const string = "2023-12-31";
const match = regex.exec(string);
console.log(match); // ["2023-12-31", "2023", "12", "31"]
replace() メソッド
- マッチンググループを使用した置換
const regex = /pattern/;
const string = "matching string";
const newString = string.replace(regex, replacement);
- $1, $2 などの記法
const regex = /(\d{4})-(\d{2})-(\d{2})/;
const string = "2023-12-31";
const newString = string.replace(regex, "$2/$1/$3");
console.log(newString); // "12/2023/31"
JavaScript正規表現のグループ抽出の例
const regex = /(\d{4})-(\d{2})-(\d{2})/;
const string = "2023-12-31";
const matches = string.match(regex);
console.log(matches); // ["2023-12-31", "2023", "12", "31"]
- 解説
regex
には、年、月、日のパターンを定義した正規表現を指定しています。string
には、マッチさせたい文字列を指定しています。match()
メソッドを使用して、正規表現と文字列をマッチさせます。matches
配列には、マッチした全体と、各グループの値が格納されます。
const regex = /(\d{4})-(\d{2})-(\d{2})/;
const string = "2023-12-31";
const match = regex.exec(string);
console.log(match); // ["2023-12-31", "2023", "12", "31"]
- 解説
exec()
メソッドは、正規表現オブジェクトに対して呼び出されます。
const regex = /(\d{4})-(\d{2})-(\d{2})/;
const string = "2023-12-31";
const newString = string.replace(regex, "$2/$1/$3");
console.log(newString); // "12/2023/31"
- 解説
replace()
メソッドを使用して、マッチした部分を置換します。- この例では、年、月、日を逆順に並べて新しい文字列を作成しています。
String.prototype.split() メソッド
- 分割された文字列の配列
- 正規表現を分割文字として使用し、マッチした部分で文字列を分割します。
- 分割された文字列は配列に格納されます。
const regex = /(\d{4})-(\d{2})-(\d{2})/;
const string = "2023-12-31";
const parts = string.split(regex);
console.log(parts); // ["", "2023", "12", "31", ""]
RegExp.prototype.test() メソッド
- マッチの有無の確認
- 正規表現と文字列がマッチするかどうかを判定します。
- マッチした場合、
true
を返します。
const regex = /(\d{4})-(\d{2})-(\d{2})/;
const string = "2023-12-31";
const isMatch = regex.test(string);
console.log(isMatch); // true
カスタム関数
- 正規表現の解析と抽出
function extractGroups(regex, string) {
const match = regex.exec(string);
if (match) {
return match.slice(1); // グループのみ抽出
}
return null;
}
const regex = /(\d{4})-(\d{2})-(\d{2})/;
const string = "2023-12-31";
const groups = extractGroups(regex, string);
console.log(groups); // ["2023", "12", "31"]
正規表現ライブラリ
- 高度な機能とパフォーマンス
const { match } = require('regex-parser'); // 例として、regex-parserライブラリを使用
const regex = /(\d{4})-(\d{2})-(\d{2})/;
const string = "2023-12-31";
const groups = match(regex, string);
console.log(groups); // ["2023", "12", "31"]
javascript regex