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

4-32 ABCのみの文字列で、それぞれ1回のみ出現する文字列

正規表現パズル

ABCのみの文字列で、それぞれ1回のみ出現する文字列を検索する。

検索前


検索後


対象データ

XXABCXX
AAA
ABCX
BBB
CCC
ABB
CABX
ABC
ACB
BAC
BCA
CAB
CBA


正規表現

解1

^(ABC|ACB|BAC|BCA|CAB|CBA)$

解2

^(A(BC|CB)|B(AC|CA)|C(AB|BA))$

解3

^(?=[^A]*A[^A]*$)(?=[^B]*B[^B]*$)(?=[^C]*C[^C]*$)[ABC]+$

解4

^(?=.*A)(?!(.*A){2})(?=.*B)(?!(.*B){2})(?=.*C)(?!(.*C){2})[ABC]+$


解説

解1は、nの階乗の組み合わせの論理和となります。

解2は、解1に分配法則を適用した正規表現です。

解3は、個数に制限をかけた肯定先読みで行末まで到着できるかを見てます。

解4は、数学の同値命題
Xは1以上の自然数である。かつ。Xは2以上の自然数ではない。  ⇔ X=1
を使ってます。