Granted Noam Raphael's request for minor improvements to the re module and

its documentation.

* Documented that the compiled re methods are supposed to be more full
  featured than their simpilified function counterparts.

* Documented the existing start and stop position arguments for the
  findall() and finditer() methods of compiled regular expression objects.

* Added an optional flags argument to the re.findall() and re.finditer()
  functions.  This aligns their API with that for re.search() and
  re.match().
This commit is contained in:
Raymond Hettinger 2004-09-24 03:41:05 +00:00
parent 9fa544cfa3
commit 596ba4d89e
3 changed files with 21 additions and 10 deletions

View file

@ -424,8 +424,10 @@ re.compile("^a", re.M).search("ba", 1) # fails; no preceding \n
\subsection{Module Contents}
\nodename{Contents of Module re}
The module defines the following functions and constants, and an exception:
The module defines several functions, constants, and an exception. Some of the
functions are simplified versions of the full featured methods for compiled
regular expressions. Most non-trivial applications always use the compiled
form.
\begin{funcdesc}{compile}{pattern\optional{, flags}}
Compile a regular expression pattern into a regular expression
@ -552,21 +554,23 @@ ignored.
the old \function{regsub.split()} and \function{regsub.splitx()}.
\end{funcdesc}
\begin{funcdesc}{findall}{pattern, string}
\begin{funcdesc}{findall}{pattern, string\optional{, flags}}
Return a list of all non-overlapping matches of \var{pattern} in
\var{string}. If one or more groups are present in the pattern,
return a list of groups; this will be a list of tuples if the
pattern has more than one group. Empty matches are included in the
result unless they touch the beginning of another match.
\versionadded{1.5.2}
\versionchanged[Added the optional flags argument]{2.4}
\end{funcdesc}
\begin{funcdesc}{finditer}{pattern, string}
\begin{funcdesc}{finditer}{pattern, string\optional{, flags}}
Return an iterator over all non-overlapping matches for the RE
\var{pattern} in \var{string}. For each match, the iterator returns
a match object. Empty matches are included in the result unless they
touch the beginning of another match.
\versionadded{2.2}
\versionchanged[Added the optional flags argument]{2.4}
\end{funcdesc}
\begin{funcdesc}{sub}{pattern, repl, string\optional{, count}}
@ -695,11 +699,13 @@ attributes:
Identical to the \function{split()} function, using the compiled pattern.
\end{methoddesc}
\begin{methoddesc}[RegexObject]{findall}{string}
\begin{methoddesc}[RegexObject]{findall}{string\optional{, pos\optional{,
endpos}}}
Identical to the \function{findall()} function, using the compiled pattern.
\end{methoddesc}
\begin{methoddesc}[RegexObject]{finditer}{string}
\begin{methoddesc}[RegexObject]{finditer}{string\optional{, pos\optional{,
endpos}}}
Identical to the \function{finditer()} function, using the compiled pattern.
\end{methoddesc}

View file

@ -156,7 +156,7 @@ def split(pattern, string, maxsplit=0):
returning a list containing the resulting substrings."""
return _compile(pattern, 0).split(string, maxsplit)
def findall(pattern, string):
def findall(pattern, string, flags=0):
"""Return a list of all non-overlapping matches in the string.
If one or more groups are present in the pattern, return a
@ -164,16 +164,16 @@ def findall(pattern, string):
has more than one group.
Empty matches are included in the result."""
return _compile(pattern, 0).findall(string)
return _compile(pattern, flags).findall(string)
if sys.hexversion >= 0x02020000:
__all__.append("finditer")
def finditer(pattern, string):
def finditer(pattern, string, flags=0):
"""Return an iterator over all non-overlapping matches in the
string. For each match, the iterator returns a match object.
Empty matches are included in the result."""
return _compile(pattern, 0).finditer(string)
return _compile(pattern, flags).finditer(string)
def compile(pattern, flags=0):
"Compile a regular expression pattern, returning a pattern object."

View file

@ -32,6 +32,11 @@ Extension modules
Library
-------
- re's findall() and finditer() functions now take an optional flags argument
just like the compile(), search(), and match() functions. Also, documented
the previously existing start and stop parameters for the findall() and
finditer() methods of regular expression objects.
- rfc822 Messages now support iterating over the headers.
- The (undocumented) tarfile.Tarfile.membernames has been removed;