mirror of
https://github.com/python/cpython.git
synced 2025-08-03 08:34:29 +00:00
Closes #14342: remove out-of-date section about avoiding recursion errors.
This commit is contained in:
parent
12c3cd7c1f
commit
5ec6fdb0f6
1 changed files with 0 additions and 22 deletions
|
@ -1090,28 +1090,6 @@ The equivalent regular expression would be ::
|
|||
(\S+) - (\d+) errors, (\d+) warnings
|
||||
|
||||
|
||||
Avoiding recursion
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
If you create regular expressions that require the engine to perform a lot of
|
||||
recursion, you may encounter a :exc:`RuntimeError` exception with the message
|
||||
``maximum recursion limit exceeded``. For example, ::
|
||||
|
||||
>>> s = 'Begin ' + 1000*'a very long string ' + 'end'
|
||||
>>> re.match('Begin (\w| )*? end', s).end()
|
||||
Traceback (most recent call last):
|
||||
File "<stdin>", line 1, in ?
|
||||
File "/usr/local/lib/python3.2/re.py", line 132, in match
|
||||
return _compile(pattern, flags).match(string)
|
||||
RuntimeError: maximum recursion limit exceeded
|
||||
|
||||
You can often restructure your regular expression to avoid recursion.
|
||||
|
||||
Simple uses of the ``*?`` pattern are special-cased to avoid recursion. Thus,
|
||||
the above regular expression can avoid recursion by being recast as ``Begin
|
||||
[a-zA-Z0-9_ ]*?end``. As a further benefit, such regular expressions will run
|
||||
faster than their recursive equivalents.
|
||||
|
||||
.. _search-vs-match:
|
||||
|
||||
search() vs. match()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue