正規表現の否定 - 指定した文字、文字列以外で一致する正規表現式

マリゾー
質問: 正規表現で~以外で一致させたい
正規表現で検索する式を作っているのですが、先頭がOK以外の文字列の行を抜き出したいです。~以外の式はどうやったら記述できるのでしょうか?

正規表現や正規表現式内での否定の表現の記述の紹介です。

文字の否定:指定した文字以外の文字に一致させる場合

指定した文字以外の文字に一致させる場合には次の書式を利用します。

[^文字]

記述例

(a以外の文字)123 のパターン(k123 z123 など)に一致する表現は以下になります。

[^a]123

詳しくはこちらの記事を参照してください。


ワンポイント
大かっこがない場合の ^(文字) の正規表現式では、^は行頭を表す記号になります。

パターンの一部否定:特定のパターンを除くパターンに一致させる

否定先読み

特定のパターンを除くパターンに一致させる場合には否定先読みと呼ばれる次の書式を利用します。

(?!パターン)

記述例

abc123 以外のabc並びのパターン(abc999 abc456)にマッチさせる表現は以下になります。

abc(!123)


否定先読みの詳細はこちらの記事を参照してください。

否定後読み

特定のパターンを除くパターンに一致させる場合には否定後読みと呼ばれる次の書式を利用します。

(?<!パターン)

記述例

abc123 以外の123並びのパターン(bac123 xxz123 pppp123)にマッチさせる表現は以下になります。

(?<!abc)123


否定後読みの詳細はこちらの記事を参照してください。

行頭の否定

行の開始を否定する場合には、^[^..] (?!...) を組み合わせます。

指定した文字以外で始まる文字列と一致

(文字)で始まる文字列を否定できます。

^[^文字]


"k"以外で始まる文字列に一致します。

^[^k].*

指定した文字列以外で始まる文字列と一致

(文字列)で始まる文字列を否定できます。

^(?!文字列)


"abc"で始まる文字列以外の文字列にマッチします。

^(?!abc).*


冒頭の"OK"以外で始まる文字列にマッチする式は以下となります。

^(?!OK).*

行末の否定

行の終了を否定する場合には、$[^..] (?<!...) を組み合わせます。

指定した文字以外で終わる文字列と一致

(文字)で終わる文字列を否定できます。

[^文字]$


3以外で終わる文字列に一致します。

.*[^3]$

指定した文字列以外で終わる文字列と一致

(文字列)で終わる文字列を否定できます。

(?<!文字列)$


pen以外で終わる文字列に一致します。

.*(?<!pen)$

A.W.S (Another World Story)

正規表現の否定 - 指定した文字、文字列以外で一致する正規表現式:画像1

ジョンのITコンサルオフィスは、夕暮れ時の東京の喧騒から一歩離れたビルの一角にあった。 窓の外では、ネオンがちらつき始め、遠くの車のクラクションが微かに響く。 オフィスの中は、モニターの青白い光と、ジョンが愛用するコーヒーマシンのガタガタという音が支配していた。 デスクには、コードが書き殴られたノートと、飲みかけのエスプレッソのカップが雑然と並んでいる。

ジョンは椅子に深く腰かけ、キーボードを叩く手を止めて、向かいの席に座るジョナサンに目をやった。 ジョナサンは、なぜか手に持ったペンをくるくる回しながら、どこか浮ついた笑みを浮かべている。

「なあ、ジョナサン、正規表現の否定って知ってるか?」

ジョンが口を開いた。声には、技術トークに突入する前のワクワク感が滲む。

「指定した文字や文字列以外に一致する正規表現さ。たとえば、[^a-z]って書けば、アルファベット以外の文字にマッチする。
シンプルだけど、めっちゃ強力なんだよ。ログ解析でエラーコードだけ抜き出したいときとか、特定のフォーマットを避けたいときにバッチリだ。」
彼はカップを持ち上げ、一口飲むと、満足げに頷いた。
ジョナサンはペンを止めて、椅子の背もたれに体を預けた。オフィスの蛍光灯が彼のメガネに反射し、キラリと光る。

「へえ、面白そうだな!つまり、俺が書いたコードのバグ以外を全部拾うみたいな?[^バグ]って感じ?」

彼の口元にいたずらっぽい笑みが広がる。ジョンは一瞬、眉をひそめたが、すぐに吹き出した。

「お前のコードのバグは正規表現でどうこうできるレベルじゃねえよ。[^バグ]どころか、宇宙全体を否定しても残る例外だろ!」

オフィスに二人の笑い声が響き、コーヒーマシンがタイミングよくガタンと音を立てた。窓の外では、夜の帳が下り、ネオンがさらに鮮やかに輝き始めていた。


AuthorPortraitAlt
著者
iPentecの企画・分析担当。口が悪いのでなるべく寡黙でありたいと思っている。が、ついついしゃべってしまい、毎回墓穴を掘っている。
作成日: 2023-02-27
Copyright © 1995–2025 iPentec all rights reserverd.