【正規表現】 (丸カッコ)で囲んでも「キャプチャ」はしたくない

この記事は約2分で読めます。
記事内に広告が含まれています

コーディングのイメージ

こんにちは、さち です。

正規表現」では、( ) で囲んだ部分を取り出せる「キャプチャ」という機能があります。

ただ、( ) で囲んでいてもキャプチャしたくないときもあるんですよね。

そこで今回は、「正規表現」でキャプチャをキャンセル(回避)する方法について書いていきます。

スポンサーリンク

サンプルコード

下記の JavaScript は、「正規表現」を使って URL から「画像ファイルの名前」を取り出しています。(実際に使うには不十分な点がありますが、分かりやすさを優先して簡略化しています)

var url = 'https://example.com/img/sample.png';

// 正規表現で画像ファイルの名前を取り出す
var res = url.match(/([a-z]+)\.(png|jpg|gif)/);

console.log(res);// Array(3) [ "sample.png", "sample", "png" ]

([a-z]+) という記述で「キャプチャ」を利用して、画像ファイルの名前を res に取り出しています。

ただ、正規表現の実行結果が返ってくる res の「配列」には "png" まで入っています。

画像ファイルを判別する拡張子 (png|jpg|gif) の部分は、「選択(OR)」の範囲を指定しているだけ。「キャプチャ」したいわけではありません

「キャプチャ」しないようにしてみましょう。

解決方法

var url = 'https://example.com/img/sample.png';

// 正規表現で画像ファイルの名前を探す
var res = url.match(/([a-z]+)\.(?:png|jpg|gif)/);

console.log(res);// Array [ "sample.png", "sample" ]

キャプチャしたくない場合は、( ) 内の先頭に ?: を付けます。

実際に、先ほど res の「配列」に入っていた "png" はなくなっていますね。

関連記事

今回の記事は、下記の記事で軽く触れていた内容を具体的に解説したものです。

「正規表現」の勉強のために「メタ文字」をまとめてみた
こんにちは、さち です。突然ですが、「正規表現」って知っていますか? 簡単に言うと、文章などから特定の文字を探し出す仕組みです。正規表現はプログラミングで使うイメージが強いですが、実は次のような場面で使えることもあるので、プログラミングをし

「正規表現」の基本的な使い方・概要については、上記リンク先の記事でまとめています。よかったら参考にしてみて下さい。

コメント

タイトルとURLをコピーしました