パターン一致の条件には含めたいが、結果には含めたくない場合の正規表現 (肯定後読みの利用)

パターン一致の条件には含めたいが、一致した結果には含めたくない場合の正規表現式を紹介します。

概要

正規表現でパターンにマッチさせた際に、パターンの中の一部のパターン部分に対してマッチさせたい場合があります。
この場合は「肯定後読み」を利用すると実装できます。

肯定後読みの書式

(?<=パターン)
?<= を記述します。

通常は、ブロックの後に式がおかれるため、次の形式となります。
(?<=パターン)パターン

肯定先読みとの違い
肯定先読みは、(?=...)ブロックの前に式があり、パターンにマッチし、後に続く肯定先読みの式にもマッチした場合に肯定先読みブロック以前部分がマッチと判定されます。

例1

PenguinJump にマッチしますが、マッチする範囲はJump部分のみとしたいです。
この場合の正規表現式は次の通りです。
(?<=Penguin)Jump

実行結果

置換文字列を"Dive"とした場合、次の結果になります。 PenguinJumpの文字列にマッチした場合でも、マッチの範囲は Jump 部分になり、JumpがDiveに置換されていることが確認できます。
文字列マッチするか置換後の文字列
PenguinHop×PenguinHop
PenguinStep×PenguinStep
PenguinJumpPenguinDive
DuckJump×DuckJump
OwlJump×OwlJump
GrayPenguinJumpJumpGrayPenguinDiveJump
WhitePenguinHop!!×WhitePenguinHop!!
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2022-11-05
作成日: 2022-05-05
iPentec all rights reserverd.