UPPER SYSTEM

スポンサードリンク

最長マッチと最短マッチの正規表現

今回の正規表現:●.*?●:最小限の範囲にマッチさせる

 

※●は任意の文字を示します。今回例で取り上げるのは、カギ括弧で囲まれる部分を対象とするものです。ですからはじめの●=「、うしろの●=」と読み替えて下さい。

 

さて、正規表現で、ある部分を抽出したいのに下図のような状況になってしまって困ることはありませんか?
正規表現
カギ括弧でくくられた部分を抽出したいのに、はじめの”「”から最後の”」”まで引っ掛かってしまう…。

 

* がいわゆる最長マッチの量指定子であるからです。

 

最初の●から最後の●までを対象にしてしまうのですが、

 

*? として量指定子の後ろに?を加えることによって”最小マッチ”と言って、最小限の範囲でマッチさせることが可能です。

 

正規表現
この最短マッチを用いることによって、カギ括弧でくくられた部分個別にフォーカスすることが可能となります。

 

基礎的な正規表現ですが、これを使えることで作業スピードが大幅にアップすることがありますね。

 

例えばHTMLソースやJSPのソースで任意のタグで囲まれた部分を検証したい場合などに有用です。
正規表現

 

私の勤めるようなふつーのSIer企業では自主的に正規表現を学ぼうとしていない人はこれすら知らない場合もあります。まあ、とりあえず知っておいて損はないテクニックですから、どんどん実践してみましょう。

 

 

  このエントリーをはてなブックマークに追加

 

IT技術ブログランキング  人気ブログランキングへ

スポンサードリンク

関連ページ

行頭に任意の文字を加える正規表現
SQLを作成する際に数十行のカラム名の前に,(カンマ)を付けたい!なんてときに私が行う処理の方法をご紹介いたします。
10桁以上の数字だけを抽出する正規表現
処理のレスポンスが帰らない結果として障害が発生。ログを調査します。そんなときに処理時間が長いリクエストを特定するために役立つ正規表現。
任意の文字列が含まれる行を削除する
正規表現の基礎です。これは良く使うものですので、ぜひ覚えておきましょう。
1万円以上の商品を抽出したい時の正規表現
指定した桁数で文字列を抽出する方法をご紹介します。
データから改行を削除する正規表現(詰めたい)
コピーしたデータに、改行が混ざっていて、取り除きたい時の対策です。覚えておくと日常業務に役立つこと間違いなしです。