backreferences
Peter
peter at commonlawgov.org
Wed Sep 28 17:03:00 EDT 2005
Iain King wrote:
>Amy Dillavou wrote:
>
>
>>Can someone help me with understanding how python uses backreferences?
>>I need to remember the item that was last matched by the re engine but i
>>cant seem to understand anything that I find on backreferences. if I
>>want to access the last match do i use \number or is there something
>>else i have to do?
>>
>>heres part of my code:
>>renDate = re.compile("$((\d){4}-(\d){2}-(\d){2}))")
>>renDate.search(l)
>>if(exist.search(l) and str(lastmodDate) < \1): #i need help here with \1
>>
>>Thanks in advance
>>A.D
>>
>>
>
>I haven't had to use backreferences yet, so I don't know offhand how to
>go about it. What I do know is that this online book is very useful:
>
>http://gnosis.cx/TPiP/
>
>
>Chapter 3 covers REs:
>
>http://gnosis.cx/TPiP/chap3.txt
>
>>From what I remember, in python you can use numbered backreferences (up
>to 99), or named ones.
>
>Iain
>
>
>
This shows both named backreferences and indexed. In both the
replacement and the searching.
(?P<name>data) sets the value of a named backreference named name to the
value of data (but can only be used in the pattern).
\NUMBER gets the value of a backreference by its index (can be used in
the pattern or the replacement).
(?P=name) gets the value of a named backreference (but only in the pattern).
\g<name> gets the value of a named backreference (but only in the
replacement).
Example:
re.sub(r"""<(?P<tag>H[1-5]) style="(.*)">(?P<text>.*)</(?P=tag)>""",
r"""<B style="\2">\g<text></B> | <\1 style="\2">\3<\1>""",
"""<H1 style="color: #000000">abc</H1>"""
)
HTH,
Peter
More information about the Python-list
mailing list