正規表現の基本と、ECMAScript(JavaScript)における利用方法を紹介する連載。今回は、キャプチャグループの指定方法と参照方法、マッチした部分の置換について。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
文書作成で正規表現を使うメリットに、ふぞろいのパターンを見つけてそれを置換で整えたり、置換で順番を入れ替えたりすることが一気にできることがあります。今回は、文書作成の効率をアップする正規表現による置換を紹介していきます。
キャプチャグループとは、正規表現パターンの一部をメタ文字としての丸かっこ(……)で囲ったものをいいます。キャプチャとは「捕捉する」といった意味で、大きく以下の2つの目的で使用されます。
このように、キャプチャグループは非常に便利なものです。それぞれ見ていきましょう。
第2回で取り上げた数量詞によって、リテラルやメタ文字などの項目の繰り返しを指定することができます。ここで、キャプチャグループを用いると、グループ化されたリテラルやメタ文字全体の繰り返しを指定できます。下記の「capture_group.js」では、文字列がインターネットのドメイン名を表すものかどうかチェックしています。
const regexp = /([\w-]+\.)+[\w-]+/; (1) const str1 = 'atmarkit.itmedia.co.jp'; console.log(str1.match(regexp)); // (2) ['atmarkit.itmedia.co.jp', 'co.', index: 0, input: 'atmarkit.itmedia.co.jp', groups: undefined] const str2 = 'atmarkit-itmedia-co-jp'; (2) console.log(str2.match(regexp)); // null
マッチングにはmatch()メソッドを用いています。(1)では、ドメイン名の構成要素が1文字以上の英数字(アンダースコア(_)を含む)+ハイフン(-)と区切りとしてのドット(.)のみであるとして、それをキャプチャグループとして扱って繰り返しを指定しています。キャプチャグループを使わない場合、ドメイン名のドットの数の変化に対応することが難しくなりますが、これをシンプルなパターンで記述することができます。(2)では、同じく英数字とハイフンから構成されますが、ドットを含まないためドメインとは見なされていません。
Copyright © ITmedia, Inc. All Rights Reserved.