SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

正規表現入門

正規表現の入門(1)
基礎的なメタ文字

正規表現の基礎的なメタ文字の使い方


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

ダウンロード SourceCode (6.6 KB)

10. 括弧

 メタ文字は()です。括弧の使い方は3通りあるので、それぞれ解説します。

10-1. 括弧の使い方1(量指定子と組み合わせる)

 量指定子は、直前のパターンの繰り返しの量を指定するメタ文字でしたが、直前のパターンの作成を目的として、括弧を使うことができます。

 たとえば、正規表現(he)+はheheheheheにマッチし、正規表現he+はheeeeeにマッチします。下記がサンプルです。

検索で使う正規表現
^AB{2,3}$
検索対象と検索結果
検索対象と検索結果

 量指定子と括弧を組み合わせるサンプルです。

検索で使う正規表現
^(AB){2,3}$
検索対象と検索結果
検索対象と検索結果

10-2. 括弧の使い方2(選択と組み合わせる)

 選択は、指定した複数パターンのいずれか1つにマッチするメタ文字でしたが、選択は括弧を越えて作用しないので、括弧を使って選択の作用先を制限することができます。下記がサンプルです。

検索で使う正規表現
AB|CDXX
検索対象と検索結果(ABまたはCDXXにマッチ)
検索対象と検索結果

 括弧を使って選択の作用先を制限するサンプルです。

検索で使う正規表現
(AB|CD)XX
検索対象と検索結果(ABXXまたはCDXXにマッチ)
検索対象と検索結果

10-3. 括弧の使い方3(後方参照)

 括弧を使って、マッチした文字を記憶することができます。「キャプチャする」と言います。\1でキャプチャした文字列をマッチパターンとして指定できます。たとえば、文字列ababもしくは文字列cdcdにマッチする正規表現を(ab|cd)\1と表せます。\1で1番目の開き括弧でキャプチャした文字列を指定しているのです。

 キャプチャ対象が複数ある場合、開き括弧を左から数えた時の出現順序で指定します。すなわち

  • 1番目の開き括弧の中身は\1
  • 2番目の開き括弧の中身は\2
  • 3番目の開き括弧の中身は\3
  • 4番目の開き括弧の中身は\4
  • 5番目の開き括弧の中身は\5
  • 6番目の開き括弧の中身は\6
  • 7番目の開き括弧の中身は\7
  • 8番目の開き括弧の中身は\8
  • 9番目の開き括弧の中身は\9

となります。下記がサンプルです。

検索で使う正規表現
^([0-9])\1
検索対象と検索結果
検索対象と検索結果

最後に

 今回は、基礎的なメタ文字について解説しました。次回は、最小マッチ,肯定先読み,否定先読み,肯定戻り読み,否定戻り読み,キャプチャしない括弧について解説します。

参考資料

  • 詳説 正規表現 第3版』 Jeffrey E.F. Friedl 著、長尾高弘 訳、オライリー・ジャパン、2008年4月
    正規表現を作成する際の考え方が詳細に書かれている本です。本稿で使用している正規表現の用語は、この本と同じ用語を使っています。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
正規表現入門連載記事一覧
この記事の著者

山岸 賢治(ヤマギシ ケンジ)

趣味が競技プログラミングなWebエンジニアで、OracleSQLパズルの運営者。AtCoderの最高レーティングは1204(水色)。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3246 2009/05/18 16:09

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング