トップページに戻る
次の正規表現パズルへ
前の正規表現パズルへ
4-11 指定文字列がn回以上m回以下(重複を許可)
正規表現パズル
文字列aaaの出現回数が3以上5以下の行を検索する。
ただし、以下の方式でaaaの出現回数を数える。
文字列aaaの、aaaの出現回数は1回
文字列aaaaの、aaaの出現回数は2回
文字列aaaaaの、aaaの出現回数は3回
文字列aaaXaaXaaaの、aaaの出現回数は2回
文字列aaaXaaXaaaaの、aaaの出現回数は3回
検索前
検索後
対象データ
aaa
aaaa
aaaaa
aaaXaaaXaaa
aaaXaaXaaaa
XXaaaXaaaXaaaaaa
正規表現
^((?!aaa).)*((?=aaa)a((?!aaa).)*){3,5}((?!aaa).)*$
別解1
^(((?!aaa).)*(?=aaa)a){3,5}((?!aaa).)*$
別解2
^(?=(a(?=aa).*){3})(?!(a(?=aa).*){6}).*$
解説
肯定先読みを使って、重複を許可するようにしてます。
別解2では、以下の連立不等式を使ってます。
Xは3以上の自然数である。かつ、Xは6以上の自然数ではない。 ⇔ X=3,4,5