2009/4/28 Marek spociń[email protected],Poland <[email protected]>: >> import re >> s = 'abc123abc45abc789jk' >> p = r'abc.+jk' >> lst = re.findall(p, s) >> print lst[0] > > I suggest using r'abc.+?jk' instead. > > the additional ? makes the preceeding '.+' non-greedy so instead of matching > as long string as it can it matches as short string as possible.
Did you try it? It doesn't do what you expect, it still matches at the beginning of the string. The re engine searches for a match at a location and returns the first one it finds. A non-greedy match doesn't mean "Find the shortest possible match anywhere in the string", it means, "find the shortest possible match starting at this location." Kent _______________________________________________ Tutor maillist - [email protected] http://mail.python.org/mailman/listinfo/tutor
