> That's great! Thanks for the quick response. Yeah, abcdcd should be > possible too.
The below passes that test now as well as a couple others I tossed at it. I changed it from a one-line regexp to a VERBOSE regexp to make it easier to read and see what's going on. You may be able to see the pattern building there, so if you need to add additional stages/letters, it should likely follow the same pattern. -tkc import re tests = [ ('aabbbaabbcccbbbcccddd', True), ('aabcabcd', True), ('abcd', True), ('aaaaabbbbbccccaaaaadddd', False), ('aaaaaaaaaaabbbbbccc', False), ('abcdcd', True), ('abccccdaaaabbbbccccd', True), ('abccccdccccd', True), ] #regex = r'^(a+b+)+(c+(a*b+c+)*)d+$' regex = r""" ^ a+ b+(a*b+)* c+((a*b+)*c+)* d+(((a*b+)*c+)*d+)* $""" r = re.compile(regex, re.VERBOSE) for test, expected in tests: matched = (r.match(test) is not None) if matched == expected: print "PASSED: %s with %s" % (test, expected) else: print "FAILED: %s with %s" % (test, expected) -- http://mail.python.org/mailman/listinfo/python-list