「文字列1」又は「文字列2」で開始しない行を検索する

「行検索」の正規表現サンプル

やりたいこと

「文字列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文字以上ある」状態を表します。

■$
 行末を表します。