Mike Rennie wrote: > Hi, folks > > I'm still relatively new to the language, so I hope this question isn't too > naive. It's a general question for anyone who might have some insights on > Regular Expressions. > > According to Mark Pilgrim, author of "Dive Into Python", "If the regular > expression matches, the method will return a Match object, which Python > considers to be true" (Section 16.3, Example 16.8). > > So, I think "great", and write a function that returns a match object using > re's. > > So i make some testcases. The test where there is no match, and the return > from > the function is None, passes. > > The test where there is a match, fails on the assertion: > > AssertionError: <_sre.SRE_Match object at 0x00AFB9C0> != True > > But, shouldn't it accept that as True, based on the info. in Dive Into > Python? > I suspect I am being naive in my interpretation of things, so if anyone has > any > feedback on how I might get this to work so my function just returns either > True (if a match) or False (if no match), I welcome it. > You seem to be executing a snippet like
match = re.match(...) assert match == True, "Some error message" This isn't going to work. Basically, when Mark says "the interpreter considers the match object to be true" all he really means is that the test if match: will succeed. This is in contradistinction to when the match fails, when all re matching functions and methods return None, which tests false. If you want to test that the match succeeds (and you aren't interested in any other properties of the match object) the most straightforward assertion would be assert match is not None, "Something did not match" regards Steve -- Steve Holden +44 150 684 7255 +1 800 494 3119 Holden Web LLC www.holdenweb.com PyCon TX 2006 www.python.org/pycon/ -- http://mail.python.org/mailman/listinfo/python-list