Мне нужна помощь в поиске всех строк, не включенных в (a*b)*

Я делаю это для домашней работы. Мне нужно написать регулярное выражение для языка над (a, b) который включает в себя все строки, не включенные в язык (a*b)*

например 'aaaaaaabaaaaaaaabaaaaaaabaaaabaaaaaaaaab' будет работать. Поэтому я ищу регулярное выражение для всех строк, которые не включены в это.

Можете ли вы помочь мне по крайней мере встать на правильный шаг, чтобы понять это?

я знаю это a*b значит как много aкак мы хотим, а затем один b, Тогда весь этот сорт столько раз, сколько мы хотим.

3 ответа

Кажется, что ваш (a*b)* регулярное выражение соответствует всему, что заканчивается на b или является пустым.

так что регулярное выражение, которое соответствует всему, что заканчивается в, кажется, решением..

a$ или же /a$/

[^ab]*

Это, вероятно, должно сработать. Это говорит о том, что строка не должна иметь a или b. ^ является символом отрицания.

Вы можете перебирать строку и проверять наличие символов, кроме "a" и "b". Кажется, что цепочки 'b' разрешены, и пустая строка является частью языка, поскольку звезда Клини допускает нулевые вхождения символа.

Другие вопросы по тегам