Мне нужна помощь в поиске всех строк, не включенных в (a*b)*
Я делаю это для домашней работы. Мне нужно написать регулярное выражение для языка над (a
, b
) который включает в себя все строки, не включенные в язык (a*b)*
например 'aaaaaaabaaaaaaaabaaaaaaabaaaabaaaaaaaaab' будет работать. Поэтому я ищу регулярное выражение для всех строк, которые не включены в это.
Можете ли вы помочь мне по крайней мере встать на правильный шаг, чтобы понять это?
я знаю это a*b
значит как много a
как мы хотим, а затем один b
, Тогда весь этот сорт столько раз, сколько мы хотим.
3 ответа
Кажется, что ваш (a*b)*
регулярное выражение соответствует всему, что заканчивается на b или является пустым.
так что регулярное выражение, которое соответствует всему, что заканчивается в, кажется, решением..
a$
или же /a$/
[^ab]*
Это, вероятно, должно сработать. Это говорит о том, что строка не должна иметь a или b. ^ является символом отрицания.
Вы можете перебирать строку и проверять наличие символов, кроме "a" и "b". Кажется, что цепочки 'b' разрешены, и пустая строка является частью языка, поскольку звезда Клини допускает нулевые вхождения символа.