>>>> regex = r'[A-Za-z]:\\([^/:\*\?"<>\|])*' >>>> p = re.compile(regex) >>>> p.match('c:\\test') > <_sre.SRE_Match object at 0x009D77E0> >>>> p.match('c:\\test?:/') > <_sre.SRE_Match object at 0x009D7720> > > the last example shouldnt give a match
Ah, but it should, because it *does* match. >>> m = p.match('c:\\test?:/') >>> m.group(0) 'c:\\test' >>> # add a "$" at the end to anchor it >>> # to the end of the line >>> regex = r'[A-Za-z]:\\([^/:\*\?"<>\|])*$' >>> p = re.compile(regex) >>> m = p.match('c:\\test?:/') >>> m By adding the "$" to ensure that you're matching the whole string passed to match() and not just as much as possible given the regexp, you solve the problem you describe. -tkc -- http://mail.python.org/mailman/listinfo/python-list