regex recursive matching (regex 2015.07.19)
ben.usenet at bsb.me.uk
Wed Aug 19 16:41:06 CEST 2015
MRAB <python at mrabarnett.plus.com> writes:
> On 2015-08-18 22:55, Ben Bacarisse wrote:
>> Neal Becker <ndbecker2 at gmail.com> writes:
>>> Trying regex 2015.07.19
>>> I'd like to match recursive parenthesized expressions, with groups such that
>>> 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():
More information about the Python-list