我最近开始学习正则表达式,并试图为上面的问题写一个。如果限制只放在一个字母上(例如,不超过 2 个“b”),这并不困难。
那么答案是:a* c*(b|ε)a* c*(b|ε)a* c*
但是对于 2 个“b”和 3 个“c”,“a”之间可能的排序总数为 24(5 选择 3),因此编写一个包含所有这些可能性的正则表达式将非常繁重(因为我们可以选择任意数量的 bs 和 cs,只要数量分别小于 2 和 3)(例如 bcbcc、cbbcc、bcbc、bcc、b、c、...)。
那么是否可以为问题编写一个简洁的正则表达式,或者至少可以通过简化来写出可能性?