正規表現 応用編その8 否定先読み

原文ファイルのトリセツ

皆さま、こんにちは。ホンヤク社の成田です。
いよいよ梅雨明けで暑い日が続いていますが、皆さまいかがお過ごしでしょうか。

 

今回は、否定先読みについてお話しします。前回ご紹介した先読みのいわば反対版で、「指定以外のテキストの前(=先)にあるテキスト」を検索するための正規表現です。

 

否定先読みは「(?!)」と記し、「!」の後ろに任意のテキストを入力することで使えます。実際の例を紹介したいと思います。

 


\d+(?!mm|\d)
⇒「mm」以外のテキストの前にある1文字以上の数字を検索するための、否定先読みを使った正規表現です。「\d」は、「100mm」などのケースで「10」の部分を拾うことがないように「1文字以上の数字の後ろに別の数字もない」ことを意味します。
さらに「\d+(?!mm|cm|m|km|\d)」などとすれば、「mm」「cm」「m」「km」以外の単位がついている数字のみを効率的に検索できます。

 

\b\w+\b(?!,)
⇒カンマ以外のテキストの前にある英単語を検索するための、否定先読みを使った正規表現です。上記の例と同様に「\b\w+\b(?!\,|\.|\?|\!| )」などとすれば、「,」「.」「?」「!」「スペース」以外のテキストの前にある英単語を効率的に検索できます。

 

\d(?!\d)
⇒後ろに数字1文字がついていない数字1文字を検索するための、否定先読みを使った正規表現です。1桁の数字か、2桁以上の数字の1の位の数字がヒットします。

 

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

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