m{ A # A (?: [^AB]* # 0 or more non-A and non-B characters . B # any character, then a B )* # this combo, 0 or more times [^AB]* # 0 or more non-A and non-B characters A # an A }x #### BEFORE & AFTER REGEX <> A <01234567890A> [^AB]* . <> B FAILED <0A> . B FAILED #### <90A> . <0A> B FAILED #### [^AB]* A <> FINISHED