やりたいこと
「文字列1」又は「文字列2」で開始しない行を検索する
正規表現
^(?!(AAA|BBB)).*$
※赤文字:メタ文字
※上記の正規表現:文字列1を「AAA」、文字列2を「BBB」とする場合
検索結果
検索前
AAA
BBB
CCC
AAABBB
CCCAAA
BBBAAACCC
CCCBBB
EEEFFF
DDDBBBAAARRR
検索後
AAA
BBB
CCC
AAABBB
CCCAAA
BBBAAACCC
CCCBBB
EEEFFF
DDDBBBAAARRR
※赤文字:条件に一致する文字列
解説
■^
先頭を表します。
■(?!(AAA|BBB))
(?!~):否定先読みを表します。
|:「又は」を表します。
よって、(?!(AAA|BBB))は「AAA」と「BBB」にはマッチしないことを表します。
※(?!.*(AAA|BBB))と記載されていれば、全ての「AAA」と「BBB」にマッチしない
ことを表します。しかし、否定先読みグループに「.*」が存在しないかつ、否定先
読みグループが「^」の直後に記述されていることから、先頭にある「AAA」と
「BBB」のみがマッチしないということになります。
上記の検索結果においても、先頭に「AAA」や「BBB」がないかつ、それ以外に
「AAA」や「BBB」が含まれている行はマッチしています。
■.*
.:改行以外のすべての文字を表します。
*:直前のパターンの0回以上の繰り返しを表します。
よって、.*は改行以外の文字が「ない」あるいは「1文字以上ある」状態を表します。
■$
行末を表します。