Adds an optional flags argument to re.split, re.sub and re.subn to be

consistent with the other re module functions.
This commit is contained in:
Gregory P. Smith 2009-03-02 05:13:57 +00:00
parent 0261e5d0b6
commit ae91d0907d
3 changed files with 24 additions and 9 deletions

View File

@ -540,7 +540,7 @@ form.
instead.
.. function:: split(pattern, string[, maxsplit=0])
.. function:: split(pattern, string[, maxsplit=0, flags=0])
Split *string* by the occurrences of *pattern*. If capturing parentheses are
used in *pattern*, then the text of all groups in the pattern are also returned
@ -555,6 +555,8 @@ form.
['Words', ', ', 'words', ', ', 'words', '.', '']
>>> re.split('\W+', 'Words, words, words.', 1)
['Words', 'words, words.']
>>> re.split('[a-f]+', '0a3B9', flags=re.IGNORECASE)
['0', '3', '9']
If there are capturing groups in the separator and it matches at the start of
the string, the result will start with an empty string. The same holds for
@ -575,6 +577,9 @@ form.
>>> re.split("(?m)^$", "foo\n\nbar\n")
['foo\n\nbar\n']
.. versionchanged:: 2.7,3.1
Added the optional flags argument.
.. function:: findall(pattern, string[, flags])
@ -605,7 +610,7 @@ form.
Added the optional flags argument.
.. function:: sub(pattern, repl, string[, count])
.. function:: sub(pattern, repl, string[, count, flags])
Return the string obtained by replacing the leftmost non-overlapping occurrences
of *pattern* in *string* by the replacement *repl*. If the pattern isn't found,
@ -630,6 +635,8 @@ form.
... else: return '-'
>>> re.sub('-{1,2}', dashrepl, 'pro----gram-files')
'pro--gram files'
>>> re.sub(r'\sAND\s', ' & ', 'Baked Beans And Spam', flags=re.IGNORECASE)
'Baked Beans & Spam'
The pattern may be a string or an RE object; if you need to specify regular
expression flags, you must use a RE object, or use embedded modifiers in a
@ -650,12 +657,18 @@ form.
character ``'0'``. The backreference ``\g<0>`` substitutes in the entire
substring matched by the RE.
.. versionchanged:: 2.7,3.1
Added the optional flags argument.
.. function:: subn(pattern, repl, string[, count])
.. function:: subn(pattern, repl, string[, count, flags])
Perform the same operation as :func:`sub`, but return a tuple ``(new_string,
number_of_subs_made)``.
.. versionchanged:: 2.7,3.1
Added the optional flags argument.
.. function:: escape(string)

View File

@ -141,16 +141,16 @@ def search(pattern, string, flags=0):
a match object, or None if no match was found."""
return _compile(pattern, flags).search(string)
def sub(pattern, repl, string, count=0):
def sub(pattern, repl, string, count=0, flags=0):
"""Return the string obtained by replacing the leftmost
non-overlapping occurrences of the pattern in string by the
replacement repl. repl can be either a string or a callable;
if a string, backslash escapes in it are processed. If it is
a callable, it's passed the match object and must return
a replacement string to be used."""
return _compile(pattern, 0).sub(repl, string, count)
return _compile(pattern, flags).sub(repl, string, count)
def subn(pattern, repl, string, count=0):
def subn(pattern, repl, string, count=0, flags=0):
"""Return a 2-tuple containing (new_string, number).
new_string is the string obtained by replacing the leftmost
non-overlapping occurrences of the pattern in the source
@ -159,12 +159,12 @@ def subn(pattern, repl, string, count=0):
callable; if a string, backslash escapes in it are processed.
If it is a callable, it's passed the match object and must
return a replacement string to be used."""
return _compile(pattern, 0).subn(repl, string, count)
return _compile(pattern, flags).subn(repl, string, count)
def split(pattern, string, maxsplit=0):
def split(pattern, string, maxsplit=0, flags=0):
"""Split the source string by the occurrences of the pattern,
returning a list containing the resulting substrings."""
return _compile(pattern, 0).split(string, maxsplit)
return _compile(pattern, flags).split(string, maxsplit)
def findall(pattern, string, flags=0):
"""Return a list of all non-overlapping matches in the string.

View File

@ -163,6 +163,8 @@ Core and Builtins
- Issue #3582: Use native TLS functions on Windows
- The re.sub(), re.subn() and re.split() functions now accept a flags parameter.
Library
-------