正規表現での非貪欲マッチング(最小マッチ)の使い方

2024/08/07
x-logoline-logo

正規表現での非貪欲マッチング(最小マッチ)の使い方

2024/08/07
x-logoline-logo
PR

正規表現(せいきひょうげん)とは、文字列のパターンを表現するための特別な方法です。これを使うと、特定の文字列を簡単に検索したり、置き換えたりできます。プログラミングやデータ処理の場面でよく使われています。

貪欲マッチと非貪欲マッチ

正規表現には「貪欲マッチ」と「非貪欲マッチ」という2つのマッチングの仕方があります。まずは、これらの違いを見てみましょう。

貪欲マッチとは?

貪欲マッチとは、できるだけ多くの文字をマッチさせようとするタイプです。例えば、正規表現が「a.*b」となっているとき、文字列「a123b456b」を対象にすると、「a123b456b」の全体がマッチします。

非貪欲マッチとは?

一方、非貪欲マッチは、できるだけ少ない文字をマッチさせようとします。これにより、最小限のマッチを得ることができるのです。非貪欲マッチを用いると、同じ例で「a.*?b」と指定することで、最初の「a123b」のみがマッチします。

非貪欲マッチの使い方

非貪欲マッチを使うには、パターンの末尾に「?」を追加するだけです。これは、直前の量指定子の動作を非貪欲に変更します。具体的な例を見てみましょう。

例1:最小マッチの作成

次のコードは、非貪欲マッチを使った例です。

const text = "私は猫と犬が好きです。犬は特に可愛いです。";
const regex = /犬.*?可愛い/;
console.log(text.match(regex)); // 出力: 犬は特に可愛い

例2:タグの抽出

HTMLのタグを非貪欲マッチで抽出するケースもあります。

<div>これはサンプルです。</div><div>別のサンプルです。</div>
const regex = /<div>.*?<\/div>/g;
console.log(html.match(regex)); // 出力: [<div>これはサンプルです。</div>, <div>別のサンプルです。</div>]

まとめ

今回は、正規表現における非貪欲マッチの使い方について紹介しました。貪欲マッチとは異なり、非貪欲マッチを使うことで、必要な部分だけを絶妙に取り出すことができます。

この記事はAIを使用して作成されています。
PR