From: Richard M. Stallman Date: Tue, 2 May 1995 03:47:29 +0000 (+0000) Subject: Warn about nested repetition. X-Git-Tag: emacs-19.34~4207 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=73031603697d8f47a95a3e33dd222ba480795324;p=emacs.git Warn about nested repetition. --- diff --git a/lispref/searching.texi b/lispref/searching.texi index 0de6b907771..ec082152aad 100644 --- a/lispref/searching.texi +++ b/lispref/searching.texi @@ -225,6 +225,14 @@ tries to match all three @samp{a}s; but the rest of the pattern is The next alternative is for @samp{a*} to match only two @samp{a}s. With this choice, the rest of the regexp matches successfully.@refill +Nested repetition operators can be extremely slow if they specify +backtracking loops. For example, @samp{\(x+y*\)*a} could take hours to +match the sequence @samp{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxz}. The +slowness is because Emacs must try each imaginable way of grouping the +35 @samp{x}'s before concluding that none of them can work. To make +sure your regular expressions run fast, check nested repetitions +carefully. + @item + @cindex @samp{+} in regexp is a suffix operator similar to @samp{*} except that the preceding