[Tutor] backreferences - \0

Payal payal-python at scriptkitchen.com
Sun Jun 6 11:36:37 CEST 2010


On Sun, Jun 06, 2010 at 06:26:18PM +1000, Steven D'Aprano wrote:
> Two things. Firstly, the Python regex engine numbers backreferences from 
> 1, not 0, so you need \1 and not \0.

Thank for the mail, but i am still not getting it. e.g.


>>> import re
>>> s = 'one two'
>>> re.sub('(one) (two)', r'\1 - \2 \3',s)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.6/re.py", line 151, in sub
    return _compile(pattern, 0).sub(repl, string, count)
  File "/usr/lib/python2.6/re.py", line 278, in filter
    return sre_parse.expand_template(template, match)
  File "/usr/lib/python2.6/sre_parse.py", line 795, in expand_template
    raise error, "invalid group reference"
sre_constants.error: invalid group reference
>>> re.sub('(one) (two)', r'\1 - \2',s)
'one - two'

In first sub I expected,
one two - one two

I understand that \1 is first (group), \2 the second and etc.
But what is the entire regex?

With warm regards,
-Payal
-- 



More information about the Tutor mailing list