トップページに戻る    次の正規表現パズルへ    前の正規表現パズルへ

2-23 文字列が2個以上ある行を検索

正規表現パズル

行ごとで、
文字列ABCが2個以上ある行を検索する。

検索前


検索後


対象データ

ABCABC
ABCABCXYZ
XYZABCABC
ABCXYZABC
ABCXYZ
ABCXYZABCDEFGABC
DEFDEFGABC


正規表現

^(?=(.*ABC){2}).*$

別解1

^.*ABC.*ABC.*$

別解2

^(.*ABC){2}.*$


解説

別解のように、先読みを使わないほうが分かりやすいかもしれません。

ちなみに、文字列ABCが2個しかない行を検索する正規表現はこうなります。
^(?=(((?!ABC).)*ABC){2}((?!ABC).)*$).*$
もしくは、
^(((?!ABC).)*ABC){2}((?!ABC).)*$
もしくは、
^(?=(.*ABC){2})(?!(.*ABC){3}).*$

3-18 指定文字列がn回