MRAB <pyt...@mrabarnett.plus.com> writes: > On 2015-08-18 22:55, Ben Bacarisse wrote: >> Neal Becker <ndbeck...@gmail.com> writes: >> >>> Trying regex 2015.07.19 >>> >>> I'd like to match recursive parenthesized expressions, with groups such that >>> '(a(b)c)' >>> >>> would give >>> group(0) -> '(a(b)c)' >>> group(1) -> '(b)' >>> >>> but that's not what I get >>> >>> import regex >>> >>> #r = r'\((?>[^()]|(?R))*\)' >>> r = r'\(([^()]|(?R))*\)' >>> #r = r'\((?:[^()]|(?R))*\)' >>> m = regex.match (r, '(a(b)c)') >> >> The (?R) syntax is Perl -- it's no implemented in Python. Python and >> Perl regexs are very similar in syntax (for very good reasons) but >> neither (?R) nor the numbered or named versions of it are in Python. >> > He's using the regex module from PyPI:
Ah, right. Then he might find r = r'(\((?:[^()]|(?R))*\))' more suitable when combined with captures() rather than groups(): regex.match(r, '(a(b)c)').captures(1) ['(b)', '(a(b)c)'] -- Ben. -- https://mail.python.org/mailman/listinfo/python-list