Add a caveat about boundary conditions and RE concatenation, so that the

documents do not make an overly-strong assertion about the properties of
RE concatenation.

Add an example of RE{m,} syntax and what it will and will not match.
This commit is contained in:
Fred Drake 2001-08-02 20:52:00 +00:00
parent c916cdc5ca
commit 51629c245a
1 changed files with 12 additions and 9 deletions

View File

@ -61,13 +61,14 @@ matches a particular string, which comes down to the same thing).
Regular expressions can be concatenated to form new regular Regular expressions can be concatenated to form new regular
expressions; if \emph{A} and \emph{B} are both regular expressions, expressions; if \emph{A} and \emph{B} are both regular expressions,
then \emph{AB} is also an regular expression. If a string \emph{p} then \emph{AB} is also a regular expression. If a string \emph{p}
matches A and another string \emph{q} matches B, the string \emph{pq} matches A and another string \emph{q} matches B, the string \emph{pq}
will match AB. Thus, complex expressions can easily be constructed will match AB if \emph{A} and \emph{B} do no specify boundary
from simpler primitive expressions like the ones described here. For conditions that are no longer satisfied by \emph{pq}. Thus, complex
details of the theory and implementation of regular expressions, expressions can easily be constructed from simpler primitive
consult the Friedl book referenced below, or almost any textbook about expressions like the ones described here. For details of the theory
compiler construction. and implementation of regular expressions, consult the Friedl book
referenced below, or almost any textbook about compiler construction.
A brief explanation of the format of regular expressions follows. For A brief explanation of the format of regular expressions follows. For
further information and a gentler presentation, consult the Regular further information and a gentler presentation, consult the Regular
@ -138,9 +139,11 @@ not five.
\var{m} to \var{n} repetitions of the preceding RE, attempting to \var{m} to \var{n} repetitions of the preceding RE, attempting to
match as many repetitions as possible. For example, \regexp{a\{3,5\}} match as many repetitions as possible. For example, \regexp{a\{3,5\}}
will match from 3 to 5 \character{a} characters. Omitting \var{n} will match from 3 to 5 \character{a} characters. Omitting \var{n}
specifies an infinite upper bound; you can't omit \var{m}. The comma specifies an infinite upper bound; you can't omit \var{m}. As an
may not be omitted or the modifier would be confused with the example, \regexp{a\{4,\}b} will match \code{aaaab}, a thousand
previously described form. \character{a} characters followed by a \code{b}, but not \code{aaab}.
The comma may not be omitted or the modifier would be confused with
the previously described form.
\item[\code{\{\var{m},\var{n}\}?}] Causes the resulting RE to \item[\code{\{\var{m},\var{n}\}?}] Causes the resulting RE to
match from \var{m} to \var{n} repetitions of the preceding RE, match from \var{m} to \var{n} repetitions of the preceding RE,