How to match patterns like XX YY XX YY? (regex)

Alex Willmer alex at moreati.org.uk
Sat Aug 7 12:15:26 EDT 2010


On Aug 7, 4:48 pm, Peng Yu <pengyu... at gmail.com> wrote:
> The problem is that I don't know how to capture pattern that repeat
> itself (like 'a' and 'xy' in the example). I could use 'test\((\w+)
> (\w+)\)(\w) (\w)', but it will capture something like 'test(a b)x y',
> which I don't want to.
>
> I'm wondering if there is way to capture recurring patterns.

Back references can deal with repetition.

Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import re
>>> re.match(r'test\((\w+) (\w+)\)\1 \2', 'test(xy uv)xy uv').groups()
('xy', 'uv')
>>> re.match(r'test\((\w+) (\w+)\)\1 \2', 'test(a b)x y')
>>>



More information about the Python-list mailing list