Почему это не может быть b*a(ab*ab*)*b*
вместо этого?
b*a(ab*ab*)*b*
не работает, потому что это потребует, чтобы строка имела два последовательных a
s перед первым неведущий b
, не так ли? Например, abaa
не будет соответствовать предложенному вами регулярному выражению, когда это необходимо. Используйте отладчик регулярных выражений на таком сайте, как Regex101 , чтобы убедиться в этом сами.
С другой стороны, перемещение всей ab*
части в начало (b*ab*(ab*ab*)*
) также работает.
почему это (ab*ab*)*
, а не (b*ab*ab*)*
?
(b*ab*ab*)*
работает , но первый b*
довольно избыточно, потому что все, что осталось b
, будет соответствовать последнему b*
в группе. Также перед группой стоит b*
, что приводит к тому, что b*
не может ничего сопоставить, следовательно, это избыточно.