正規表現 応用編その11 否定後読み

原文ファイルのトリセツ

皆さま、こんにちは。ホンヤク社の成田です。
8月が始まりました。お盆も間近ですが、皆さまいかがお過ごしでしょうか。

 

今回は、否定後読みについてお話しします。後読みの反対の機能を持ち、「指定以外のテキストの後にあるテキスト」を検索するための正規表現です。否定後読みは「(?<!)」と記し、「!」の後ろに任意のテキストを入力することで使えます。

 

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

 


(?<!明治|大正)\d{2}年
⇒「明治」「大正」以外のテキストの後にある2文字の数字と「年」の組み合わせを検索するための、否定後読みを使った正規表現です。「昭和47年」「平成30年」などの「47年」「30年」がヒットする対象として想定されますが、「創業50年」「没後25年」「1999年」などもヒット対象となってしまいますので、必要に応じてさらに絞り込むのが良いかと思います。

 

(?<!●\d)[、-鶴]+
⇒たとえば検索対象テキストが「●1 はじめに」「●2 本機の据え付け」「●3 本機の運転」などだった場合に、否定後読みで「(?<!●\d\.)」とすることで数字の次に来るスペースの後の位置を特定し、そのあとに来る全角テキストをヒットさせることができます。通常の後読みで「(?<=●\d )[、-鶴]+」とすることも可能ですが、このように否定後読みを使っても良いでしょう。

 

(?<!\d)\d
⇒前に数字1文字がついていない数字1文字を検索するための、否定後読みを使った正規表現です。1桁の数字か、2桁以上の数字の一番大きな位の数字1文字がヒットします。※2桁以上の数字の途中から検索を開始すると、直後の数字1文字がヒットしますのでご注意ください。

 

いかがでしたでしょうか? 否定後読みの基本的な機能と使用法がおわかりになれば幸いです。

次回は、後読みや否定後読みを使用した応用的な例についてご紹介したいと思います。