Match First Sequence in Regular Expression?

Fredrik Lundh fredrik at pythonware.com
Thu Jan 26 18:20:10 CET 2006


Roger L. Cauvin wrote:

> > $ python test.py
> > got    expected
> > ---------------
> > accept accept
> > reject reject
> > accept accept
> > reject reject
> > accept accept
>
> Thanks, but the second test case I listed contained a typo.  It should have
> contained a sequence of three of the letter 'a'.  The test cases should be:
>
> "xyz123aaabbab" accept
> "xyz123aabbaaab" reject
> "xayz123aaabab" accept
> "xaaayz123abab" reject
> "xaaayz123aaabab" accept
>
> Your pattern fails the second test.

$ more test.py

import re

print "got    expected"
print "------ --------"

testsuite = (
    ("xyz123aaabbab", "accept"),
    ("xyz123aabbaaab", "reject"),
    ("xayz123aaabab", "accept"),
    ("xaaayz123abab", "reject"),
    ("xaaayz123aaabab", "accept"),
    )

for string, result in testsuite:
    m = re.search("a+b", string)
    if m and len(m.group()) == 4:
        print "accept",
    else:
        print "reject",
    print result

$ python test.py

got    expected
------ --------
accept accept
reject reject
accept accept
reject reject
accept accept

</F>






More information about the Python-list mailing list