SHOEISHA iD

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

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

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

正規表現入門

正規表現の入門(2)
難しいメタ文字

正規表現の難しいメタ文字の使い方

ダウンロード SourceCode (1.8 KB)

2. 肯定先読み

 指定した正規表現が先にある位置にマッチします。メタ文字は(?=)です。

 先読みや、戻り読みは、位置にマッチするのが、理解の難しいところです。例えば、検索対象がXYZであれば、下記の4つの位置があります。

  • 行頭と文字Xの間
  • 文字Xと文字Yの間
  • 文字Yと文字Zの間
  • 文字Zと行末の間

 先読みや、戻り読みは、上記のような位置の中から条件を満たす位置を検索すると理解すればいいでしょう。下記がサンプルです。

検索対象
aababb
検索で使う正規表現1
a(?=b)
検索結果1
検索結果1
検索で使う正規表現2
b(?=b)
検索結果2
検索結果2
検索で使う正規表現3
.(?=b)
検索結果3
検索結果3

3. 否定先読み

 指定した正規表現が先にない位置にマッチします。メタ文字は(?!)です。下記がサンプルです。

検索対象
aababbaaa
検索で使う正規表現1
a(?!b)
検索結果1
検索結果1
検索で使う正規表現2
b(?!b)
検索結果2
検索結果2
検索で使う正規表現3
.(?!b)
検索結果3
検索結果3
検索で使う正規表現4
a(?!.*b)
検索結果4
検索結果4

4. 肯定戻り読み

 指定した正規表現が後ろにある位置にマッチします。メタ文字は(?<=)です。下記がサンプルです。

検索対象
aababbaaa
検索で使う正規表現1
(?<=a)a
検索結果1
検索結果1
検索で使う正規表現2
(?<=b)a
検索結果2
検索結果2
検索で使う正規表現3
(?<=a)b
検索結果3
検索結果3
検索で使う正規表現4
(?<=[ab])a
検索結果4
検索結果4

5. 否定戻り読み

 指定した正規表現が後ろにない位置にマッチします。メタ文字は(?<!)です。下記がサンプルです。

検索対象
aababbaaa
検索で使う正規表現1
(?<!a)a
検索結果1
検索結果1
検索で使う正規表現2
(?<!b)a
検索結果2
検索結果2
検索で使う正規表現3
(?<!a)b
検索結果3
検索結果3
検索で使う正規表現4
(?<![ab])a
検索結果4
検索結果4

次のページ
6. キャプチャしない括弧

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

正規表現入門連載記事一覧
この記事の著者

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

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

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/3247 2009/05/25 14:00

イベント

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

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

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

メールバックナンバー