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

3-17 指定文字がn回以外

正規表現パズル

カンマの数が3個でない行を検索する。

検索前


検索後


対象データ

1234
1,234
1,2,34
1,2,3,4
1,2,3,4,
,,,123
,1,,23


正規表現

^(?!([^,]*,[^,]*){3}$).*$

別解1

^(?!([^,]*,){3}[^,]*$).*$

別解2

^(?!(?=(.*,){3})(?!(.*,){4})).*$


解説

量指定子でカンマの数を指定して、
否定先読みを使ってます。

別解2では、以下の連立不等式を使ってます。
Xは3以上の自然数である。かつ、Xは4以上の自然数ではない。 ⇔ X=3
両方を否定して、
(Xは3以上の自然数である。かつ、Xは4以上の自然数ではない。) ということはない ⇔ X!=3

P ⇔ Q
が成立するなら、両方を否定した下記の命題も成立するのです。
Not(P) ⇔ Not(Q)