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

4-8 指定文字列がn回以上m回以下

正規表現パズル

文字列abcの出現回数が3以上5以下の行を検索する。

検索前


検索後


対象データ

abcabc
abcXabcXabc
XabcXabcXabcabc
abcabcabcabcabcabc
abcXabcXabcXabcXabcXabc


正規表現

^((?!abc).)*(abc((?!abc).)*){3,5}((?!abc).)*$

別解1

^(((?!abc).)*abc){3,5}((?!abc).)*$

別解2

^(?=(.*abc){3})(?!(.*abc){6}).*$


解説

否定先読みと量指定子を組み合わせてます。

別解2では、以下の連立不等式を使ってます。
Xは3以上の自然数である。かつ、Xは6以上の自然数ではない。 ⇔ X=3,4,5