3

ka$w\in {a,b}^n$の正確な数を含む言語の正規表現を探しています。

私はこれでかなり立ち往生しています。さまざまな長さの場合、ソリューションは で簡単${{b}^*a{b}^*}^k$です。

このような正規表現をどのように達成できるかについて、誰かアドバイスはありますか?

4

3 に答える 3

1

これに対する簡単な解決策はありません。

その言語は規則的ですが、説明するのは醜いです。(a|b)^n両方の言語 (とb*(ab*)^k) の (自明な) DFA を互いに交差させることで取得できますが、(n-k)*k状態が返された DFA が返されます。それを正規表現に変換しても改善されません。

ただし、実際の実装を探している場合は、はるかに簡単になります。入力を両方の正規表現に対して単純にテストすることも、先読みを使用してそれらを 1 つの正規表現に構成することもできます。

/^(?=[ab]{n}$)b*(ab*){k}$/
于 2013-06-02T19:54:59.040 に答える
0

全体の長さを強制するために先読みを使用できます。

^(?=.{5}$)([^a]*a){2}[^a]*$

rubular で実証されたこれを参照してください

于 2013-06-02T21:16:27.763 に答える