正規表現 応用編その12 後読みと否定後読みの例

原文ファイルのトリセツ

皆さま、こんにちは。ホンヤク社の成田です。
お盆真っ只中です。皆さまはいかがお過ごしでしたでしょうか。

 

今回は、後読みと否定後読みについてもう少し例を紹介します。以前の先読みと否定先読みのときと同様に、多少応用的な要素を含めた例をご紹介いたします。

 

否定後読みの基本的な使用例を紹介したいと思います。

 


(?<=“)[^”]+
⇒後読み「(?<=“)」とすることで「“」のあと、そしてそのあとに来るテキストを「[^”]」とすることで「”」以外となるため、「“」と「”」に囲まれているテキストをヒットさせることができます。

 

\d+(?<!\d{6})
⇒1~5桁の数字はすべて、6桁以上の数字は最初の5桁分がヒットする正規表現です。「(?<!\d{6})」という否定後読みを使って前に6桁が続かない位置を特定し、その前にある数字を「\d+」で表しています。
※2桁以上の数字の途中から検索を開始すると、直後の数字がヒットしますのでご注意ください。

 

(?<!明治|大正)\d{2}(?=年)
⇒前回紹介した例の応用版で、否定後読みと先読みを組み合わせたものです。「明治」「大正」以外のテキストの後にある2文字の数字で、「年」の前にあるという2つの検索条件を設定しています。このようにすることで、「昭和47年」「平成30年」などの「47」「30」という数字部分のみがヒットする対象となります。「1999」などがヒット対象となるのを避けたい場合は、否定後読みのほうに「\d」を追加して「(?!<明治|大正|\d)\d{2}(?=年)」とするのが良いかと思います。

 

いかがでしたでしょうか? 後読みや否定後読みの応用的な使用法のヒントになれば幸いです。

次回からは、正規表現を使用したさまざまな検索・置換方法についてご紹介していきたいと思います。