こんにちは、さち です。
「正規表現」では、(
)
で囲んだ部分を取り出せる「キャプチャ」という機能があります。
ただ、(
)
で囲んでいてもキャプチャしたくないときもあるんですよね。
そこで今回は、「正規表現」でキャプチャをキャンセル(回避)する方法について書いていきます。
サンプルコード
下記の JavaScript は、「正規表現」を使って URL から「画像ファイルの名前」を取り出しています。(実際に使うには不十分な点がありますが、分かりやすさを優先して簡略化しています)
var url = 'https://example.com/img/sample.png';
// 正規表現で画像ファイルの名前を取り出す
var res = url.match(/([a-z]+)\.(png|jpg|gif)/);
console.log(res);//
([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);//
キャプチャしたくない場合は、(
)
内の先頭に ?:
を付けます。
実際に、先ほど res
の「配列」に入っていた "png"
はなくなっていますね。
関連記事
今回の記事は、下記の記事で軽く触れていた内容を具体的に解説したものです。

「正規表現」の勉強のために「メタ文字」をまとめてみた
こんにちは、さち です。突然ですが、「正規表現」って知っていますか? 簡単に言うと、文章などから特定の文字を探し出す仕組みです。正規表現はプログラミングで使うイメージが強いですが、実は次のような場面で使えることもあるので、プログラミングをし
「正規表現」の基本的な使い方・概要については、上記リンク先の記事でまとめています。よかったら参考にしてみて下さい。
コメント