皆さま、こんにちは。ホンヤク社の成田です。
お盆真っ只中です。皆さまはいかがお過ごしでしたでしょうか。
今回は、後読みと否定後読みについてもう少し例を紹介します。以前の先読みと否定先読みのときと同様に、多少応用的な要素を含めた例をご紹介いたします。
否定後読みの基本的な使用例を紹介したいと思います。
例
(?<=“)[^”]+
⇒後読み「(?<=“)」とすることで「“」のあと、そしてそのあとに来るテキストを「[^”]」とすることで「”」以外となるため、「“」と「”」に囲まれているテキストをヒットさせることができます。
\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}(?=年)」とするのが良いかと思います。
いかがでしたでしょうか? 後読みや否定後読みの応用的な使用法のヒントになれば幸いです。
次回からは、正規表現を使用したさまざまな検索・置換方法についてご紹介していきたいと思います。
