Регулярное выражение для формирования слов точно с 4 а или 5 б
В теории формального языка (с Kleene Star), если бы я хотел создать регулярное выражение, которое определяет язык, содержащий все слова в множестве {a,b}, точно с 4 a или 5 b.
(обратите внимание, что моя книга использует + для ИЛИ и * для 0 или многих)
Пока что у меня есть:
[a (b *) aaa + aa (b *) aa + aaa (b *) a + aaaa (b *) + abababab + babababa + (b *) aaaa]
+
[b (a *) bbbb + bb (a *) bbb + bbb (a *) bb + bbbb (a *) b + bbbbb (a *) + (a *) bbbbb + бабабабаба + абабабабаб]
Есть ли укороченный способ сделать это? Не похоже, что теория допускает использование min и max для букв.
1 ответ
Решение
Ваше выражение не подходит для всех возможностей (например, babababababbbb
). Искомое выражение должно быть намного проще:
[ b*ab*ab*ab*ab* + a*ba*ba*ba*ba*ba* ]