Q:

Ruby string does not match expression

I have this ruby expression as below
  (a|bc)(d?|e)*

when i use rubular to test out possible strings that fit this expression, I have some strings that I dont understand why they dont fit
the strings are "ade", it matches "ad" but does not match the "e".  Anyone can help? 

A:

The second part of the regular expression you entered (d?|e)* is the problem.   Putting the ?  on the d says, match d 0 or 1 times.   When you run through the string ade, the regex matches a, then d, then d 0 times...  If you instead changed it to (a|bc)(d|e)*, it would match ade, and seem to have the semantics that you're looking for.