[Tutor] regular expression question

=?UTF-8?Q?Marek_Spoci=C5=84ski at go2.pl =?UTF-8?Q?Marek_Spoci=C5=84ski at go2.pl
Tue Apr 28 11:06:16 CEST 2009

> Hello,
> The following code returns 'abc123abc45abc789jk'. How do I revise the pattern so
> that the return value will be 'abc789jk'? In other words, I want to find the
> pattern 'abc' that is closest to 'jk'. Here the string '123', '45' and '789' are
> just examples. They are actually quite different in the string that I'm working
> with. 
> 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.

More information about the Tutor mailing list