Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is (a|b)* the same as a*|b*?

Is (a|b)* the same as a*|b*? In other words, does (a|b)* accept string which are combinations of as and bs?

like image 249
Rick Sanchez Avatar asked Jul 15 '14 17:07

Rick Sanchez


2 Answers

Is (a|b)* the same as a*|b*?

They are not the same.

  • a*|b* means "(0 or more as) or (0 or more bs)"

  • (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)*.

like image 50
arshajii Avatar answered Sep 22 '22 05:09

arshajii


No.

In case of (a|b)*, you can mix As and Bs (see demo).

In case of a*|b*, you can have either As or Bs (see demo).

like image 35
vittore Avatar answered Sep 23 '22 05:09

vittore