From ce54617260790a523c246a1f4080b8e82386cd20 Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Sat, 17 Mar 2012 17:25:47 +0100 Subject: [PATCH] Closes #14342: remove out-of-date section about avoiding recursion errors. --- Doc/library/re.rst | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/Doc/library/re.rst b/Doc/library/re.rst index e3bac50a7e2..c2ac332e7f5 100644 --- a/Doc/library/re.rst +++ b/Doc/library/re.rst @@ -1077,28 +1077,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 "", line 1, in ? - File "/usr/local/lib/python2.5/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. - -Starting with Python 2.3, 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()