SHOEISHA iD

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

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

正規表現の問題集

正規表現の問題集2(応用編)

肯定先読み・肯定戻り読みの応用

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

ダウンロード SourceCode (1.6 KB)

4. 指定文字列内の、指定文字を検索

 最後は、指定文字列内の、指定文字を検索する正規表現についてです。

検索条件
文字列abcのb
および
文字列defのe
を検索する。

 対象データと期待する検索結果は、下記となります(黄緑色が検索にヒットした部分です)。

対象データと期待する検索結果
対象データと期待する検索結果

 この問題のポイントは、文字bをどのようにして文字列abcのbか判断するかと、文字eをどのようにして文字列defのeか判断するかです。前後の文字を判定すればいいと考えて、答えは下記となります。

答え
(?<=a)b(?=c)|(?<=d)e(?=f)

 肯定戻り読みと肯定先読みを使い、

 
前の文字がa、かつ、次の文字がcの、文字b
または
前の文字がd、かつ、次の文字がfの、文字e

 を検索しています。正規表現のイメージは下記となります。

正規表現のイメージ
正規表現のイメージ

最後に

 今回は、筆者が運営するサイト『正規表現パズル』の、応用編の正規表現を扱いました。実際にEmEditorで試すと学習効率が高いでしょう。

 次回の正規表現の問題集は、発展編となる予定です。

参考資料

  1. 詳説 正規表現 第3版』 Jeffrey E.F. Friedl 著、長尾高弘 訳、オライリー・ジャパン、2008年4月
    正規表現を作成する際の考え方が詳細に書かれている本です。本稿で使用している正規表現の用語は、この本と同じ用語を使ってます。
  1. 正規表現パズル 『IPの前ゼロを削除
    本稿の「1. IPの前ゼロを削除」で扱った正規表現と別解を置いてます。
  1. 正規表現パズル 『カンマ区切りの金額を検索
    本稿の「2. カンマ区切りの金額を検索」で扱った正規表現を置いてます。
  1. 正規表現パズル 『否定先読みで条件チェック
    本稿の「3. 否定先読みで条件チェック」で扱った正規表現を置いてます。
  1. 正規表現パズル 『指定文字列内の、指定文字を検索その1
    本稿の「4. 指定文字列内の、指定文字を検索」で扱った正規表現と別解を置いてます。

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

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

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

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

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2676 2008/11/07 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング