regex question on .findall and \b

Tim Chase python.list at
Thu Jul 2 13:17:22 EDT 2009

Ethan Furman wrote:
> Greetings!
> My closest to successfull attempt:
> Python 2.5.4 (r254:67916, Dec 23 2008, 15:10:54) [MSC v.1310 32 bit (Intel)]
> Type "copyright", "credits" or "license" for more information.
> IPython 0.9.1 -- An enhanced Interactive Python.
>    In [161]: re.findall('\d+','this is test a3 attempt 79')
>    Out[161]: ['3', '79']
> What I really want in just the 79, as a3 is not a decimal number, but 
> when I add the \b word boundaries I get:
>    In [162]: re.findall('\b\d+\b','this is test a3 attempt 79')
>    Out[162]: []
> What am I missing?

The sneaky detail that the regexp should be in a raw string 
(always a good practice), not a cooked string:


The "\d" isn't a valid character-expansion, so python leaves it 
alone.  However, I believe the "\b" is a control character, so 
your actual string ends up something like:

   >>> print repr('\b\d+\b')
   >>> print repr(r'\b\d+\b')

the first of which doesn't match your target string, as you might 


More information about the Python-list mailing list