
正規表現は、文字列の検索や置換に非常に便利なツールなのですが、その複雑さから初心者(私も含めて)にとっては少しハードルが高いかもしれません。
私もたまにしか使わないのですぐに忘れてしまって、使うたびに解説サイトとにらめっこしながら書いています。
その中でも今回紹介する「指定文字列を含まない一行を検索」と「指定文字列Aを含まないが、指定文字列Bを含む一行を検索」は非常に強力なので覚えておくと便利です。
コピペで使える否定の正規表現
指定文字列を含まない一行を検索
例えば「ABC」という文字列を含まない行を検索したい場合、以下の正規表現を使用します。
^(?!.*ABC).*$
- 「^」→行の先頭
- 「(?!.*ABC)」→「ABC」を含まない
- 「.*」→任意の文字が0回以上
- 「$」→行の末尾
指定文字列Aを含まないが、指定文字列Bを含む一行を検索
例えば「ABC」を含まず「DEF」を含む行を検索したい場合、以下の正規表現を使用します。
^(?!.*ABC).*(?=DEF).*$
- 「^」→行の先頭
- 「(?!.*ABC)」→「ABC」を含まない
- 「(?=.*DEF)」→ 「DEF」を含む
- 「.*」→任意の文字が0回以上
- 「$」→行の末尾
正規表現をコピペで使用する際の注意点としては、コピーする際に前後に余計なスペースが入らないようにすること。スペースが入ると正しく動作しません。(私は何回かやってしまいました)