> Sorry for the confusion. The correct pattern should reject > all strings except those in which the first sequence of the > letter 'a' that is followed by the letter 'b' has a length of > exactly three.
Ah...a little more clear. r = re.compile("[^a]*a{3}b+(a+b*)*") matches = [s for s in listOfStringsToTest if r.match(s)] or (as you've only got 3 of 'em) r = re.compile("[^a]*aaab+(a+b*)*") matches = [s for s in listOfStringsToTest if r.match(s)] should do the trick. To exposit: [^a]* a bunch of stuff that's not "a" a{3} or aaa three letter "a"s b+ one or more "b"s (a+b*) any number of "a"s followed optionally by "b"s Hope this helps, -tkc -- http://mail.python.org/mailman/listinfo/python-list