Reputation: 4756
Is (a|b)*
the same as a*|b*
? In other words, does (a|b)*
accept string which are combinations of a
s and b
s?
Upvotes: 8
Views: 8208
Reputation: 1001
a*|b*
denotes {ε, "a", "b", "aa", "bb", "aaa", "bbb", ...}
(a|b)*
denotes {ε, "a", "b", "aa", "ab", "ba", "bb", "aaa", aab, abb, aba, baa ...}
ε
denote empty
Upvotes: 0
Reputation: 129507
Is
(a|b)*
the same asa*|b*
?
They are not the same.
a*|b*
means "(0 or more a
s) or (0 or more b
s)"
(a|b)*
means "0 or more (a
or b
)s"
So, for example, ab
will be matched by (a|b)*
but not by a*|b*
. Note also that anything matched by a*|b*
will also be matched by (a|b)*
.
Upvotes: 11