Регулярное выражение: имеет ли звезда Клини дистрибутивное свойство?
Будет ли разница между (aa)*
а также (a*a*)
?
Есть ли распределительная собственность?
3 ответа
Клини Стар не раздает. (ab)*
сильно отличается от (a*b*)
,
В вашем конкретном примере (aa)*
будет соответствовать группам из двух a
s (таким образом, это соответствует только четным числам a
s) пока (a*a*)
эквивалентно (a*)
и соответствует любой последовательности a
s. (В таком случае, L((aa)*)
правильное подмножество L((a*a*))
, но это не обязательно верно для общего регулярного выражения).
(aa)*
группа не соответствует целому aaa
так что да, есть разница, она вернет вам только группу из 2 a
,
Но (a*a*)
это так же, как (a*)
,
Да, есть разница. (aa)* будет группами aa, тогда как (a*a*) будет a's.
По сути, первое выражение будет только чётными числами, тогда как второе не будет в этом случае.