small problem with re.sub

Mark Tolonen mark.e.tolonen at mailinator.com
Wed Jan 30 22:43:05 EST 2008


"Astan Chee" <stanc at al.com.au> wrote in message 
news:mailman.78.1201748496.9267.python-list at python.org...
> Hi,
> I have a html text stored as a string. Now I want to go through this 
> string and find all 6 digit numbers and make links from them.
> Im using re.sub and for some reason its not picking up the previously 
> matched condition. Am I doing something wrong? This is what my code looks 
> like:
> htmlStr = re.sub('(?P<id>\d{6})','<a 
> href=\"http://linky.com/(?P=id).html\">(?P=id)</a>',htmlStr)
> It seems that it replaces it alright, but it replaces it literally. Am I 
> not escaping certain characters?
> Thanks again for the help.
> Cheers
>
> Animal Logic
> http://www.animallogic.com
>
> Please think of the environment before printing this email.
>
> This email and any attachments may be confidential and/or privileged. If 
> you are not the intended recipient of this email, you must not disclose or 
> use the information contained in it. Please notify the sender immediately 
> and delete this document if you have received it in error. We do not 
> guarantee this email is error or virus free.
>
>

See the help for re.sub: "Backreferences, such as "\6", are replaced with 
the substring matched by group 6 in the pattern."

This should work:

htmlStr = re.sub('(?P<id>\d{6})','<a 
href="http://linky.com/\\1.html">\\1</a>',htmlStr)

--Mark




More information about the Python-list mailing list