Valkyria

Пользователь

Регистрация: 15.06.2014

Сообщения: 524

Рейтинг: 209

Valkyria

Регистрация: 15.06.2014

Сообщения: 524

Рейтинг: 209

Kujivunia сказал(а):

А при проверке abcaacccccbabbaacaab

разбивает на 

bcaaccccc

b

bbaac

aab

Нажмите, чтобы раскрыть...

Не очень понял в плане конечного результата, как разбить должно в итоге то?

Это ведь подходит под условия так-то?

[bc]*a[bc]*a[bc]

1 группа: bcaac

2 группа: bbaac

3 группа: aab

LubitelKazahov

Пользователь

Регистрация: 05.09.2020

Сообщения: 817

Рейтинг: 416

LubitelKazahov

Регистрация: 05.09.2020

Сообщения: 817

Рейтинг: 416

Kujivunia сказал(а):

Ну короче дали мне примитивную задачу. 

По словесному описанию языка (Σ={a,b,c}) составить регулярное выражение.

Если в слове есть буква a, она написана не менее 2-х раз подряд.

 

Ну я такой сижу, думаю, и пишу: 

(b*c*)*(aa)*(b*c*)*

Вбиваю это в онлайн проверку регулярок. А она работает не так как я думал. 

 

Как я думал: 

(b*c*)* - любое число b и любое число c, и эта комба повторяется любое число раз. Типа "" "b" "bbbbbc" 'ccc' проходят. 

(aa)* - ну тут всё очевидно, любое число пар. Т.е. если есть а, то их только 2 и больше подряд 

 

Ну и т.к. первая скобка под звёздочкой, то слово может начинаться или кончаться на a

 

А при проверке abcaacccccbabbaacaab

разбивает на 

bcaaccccc

b

bbaac

aab

Лады, две вырезанные одиночные а это правильно. А дальше я не понял. 

Почему (bcaaccccc) и (b) это две подстроки, почему b не подключено к предыдущей подстроке? 

Почему эти (bbaac) (aab) две подстроки стали двумя подстроками, что им мешает быть одной? Это же не противоречит правилам

Нажмите, чтобы раскрыть...

Бро построй конечный автомат и из него уже регулярку

(b+c)*(aa(a)* + 1)(b+c)* вроде подходит

(aa)* - неправильно, у тебя не просто 2 или больше, а только четное количество букв а

ну и личное имхо (b+c)* выглядит как то приятнее чем (b*c*)*

Kujivunia сказал(а):

Это задача не по программированию, а по формальным грамматикам

Мне потом по регулярке делать праволинейную грамматику надо. 

Нажмите, чтобы раскрыть...

ты где учишься? я тоже эту тему щас плотно разбираю (у меня коллоквиум по грамматикам) roflanLico.png?1616515069