「文字列1」「文字列2」を全て含む行を検索する

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

やりたいこと

「文字列1」「文字列2」を全て含む行を検索する

 

正規表現

^(?=.*AAA)(?=.*BBB).*$

赤文字:メタ文字
※上記の正規表現:文字列1を「AAA」、文字列2を「BBB」とする場合

 

検索結果

検索前

AAA
BBB
CCC
DDD
AAABBB
AAACCC
AAADDD
BBBAAA
BBBCCC
BBBDDD
CCCDDD
DDDAAA
AAABBBCCC
AAABBBDDD
AAACCCDDD
BBBAAACCC
BBBCCCDDD
AAACCCBBBDDD

検索後

AAA
BBB
CCC
DDD
AAABBB
AAACCC
AAADDD
BBBAAA
BBBCCC
BBBDDD
CCCDDD
DDDAAA
AAABBBCCC
AAABBBDDD

AAACCCDDD
BBBAAACCC
BBBCCCDDD
AAACCCBBBDDD

赤文字:条件に一致する文字列

 

解説

■^
 先頭を表します。

■(?=.*AAA)
 (?=~):肯定先読みを表します。
 .:改行以外のすべての文字を表します。
 *:直前のパターンの0回以上の繰り返しを表します。
  よって、.*は改行以外の文字が「ない」あるいは「1文字以上ある」状態
  を表します。
 (?=.*AAA)は「改行以外の文字が「ない」あるいは「1文字以上ある」+
 AAA」のパターンの先頭位置を表します。

■(?=.*BBB)
 (?=~):肯定先読みを表します。
 .:改行以外のすべての文字を表します。
 *:直前のパターンの0回以上の繰り返しを表します。
  よって、.*は改行以外の文字が「ない」あるいは「1文字以上ある」状態
  を表します。
 (?=.*BBB)は「改行以外の文字が「ない」あるいは「1文字以上ある」+
 BBB」のパターンの先頭位置を表します。

■.*
 .:改行以外のすべての文字を表します。
 *:直前のパターンの0回以上の繰り返しを表します。
 よって、.*は改行以外の文字が「ない」あるいは「1文字以上ある」状態を
 表します。

■$
 行末を表します。