In Python 2.7 e 3, le seguenti opere:Qual è il numero massimo di ripetizioni consentito in un'espressione regolare di Python?
>>> re.search(r"a{1,9999}", 'aaa')
<_sre.SRE_Match object at 0x1f5d100>
ma questo dà un errore:
>>> re.search(r"a{1,99999}", 'aaa')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/re.py", line 142, in search
return _compile(pattern, flags).search(string)
File "/usr/lib/python2.7/re.py", line 240, in _compile
p = sre_compile.compile(pattern, flags)
File "/usr/lib/python2.7/sre_compile.py", line 523, in compile
groupindex, indexgroup
RuntimeError: invalid SRE code
Sembra che ci sia un limite superiore al numero di ripetizioni consentite. Questa parte della specifica dell'espressione regolare o una limitazione specifica di Python? Se specifico di Python, è il numero effettivo documentato da qualche parte e varia tra le implementazioni?
Se volete farlo notare nella tua risposta: per CPython, questa limitazione è implementata in ['_sre.c'] (http://hg.python.org/cpython/file/7268838063e1/Modules/_sre.c#l2694) –
Inoltre, se guardi in sre_constants.py, troverai 'MAXREPEAT = 65535' –
Il limite può essere trovato usando:' import sre_constants; print sre_constants.MAXREPEAT' –