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

4-5 複数文字がn回以上m回以下

正規表現パズル

aの出現回数が3以上5以下、かつ、
bの出現回数が4以上6以下の行を検索する。

検索前


検索後


対象データ

aaa
aaaa
aaaaa
ababa
ababab
abcdba
abcdabcdabcd
aaabbbab
aaabbbb
aaabbbbaaaaa


正規表現

^(?=[^a]*(a[^a]*){3,5}[^a]*$)(?=[^b]*(b[^b]*){4,6}[^b]*$).*$

別解1

^(?=([^a]*a){3,5}[^a]*$)(?=([^b]*b){4,6}[^b]*$).*$

別解2

^(?=(.*a){3})(?!(.*a){6})(?=(.*b){4})(?!(.*b){7}).*$


解説

肯定先読みの論理積を求めてます。

数学の同値命題(連立不等式)
Xは3以上の自然数である。かつ、Xは6以上の自然数でない。 ⇔ X=3,4,5のいずれかである。
Yは4以上の自然数である。かつ、Yは7以上の自然数でない。 ⇔ Y=4,5,6のいずれかである。
を使ってもいいです。