Commit ccc5ae7a authored by Gregory P. Smith's avatar Gregory P. Smith

Merged revisions 70090 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/trunk

........
  r70090 | gregory.p.smith | 2009-03-01 21:13:57 -0800 (Sun, 01 Mar 2009) | 3 lines

  Adds an optional flags argument to re.split, re.sub and re.subn to be
  consistent with the other re module functions.
........
parent 4221c74c
...@@ -571,7 +571,7 @@ form. ...@@ -571,7 +571,7 @@ form.
instead. 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 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 used in *pattern*, then the text of all groups in the pattern are also returned
...@@ -585,6 +585,8 @@ form. ...@@ -585,6 +585,8 @@ form.
['Words', ', ', 'words', ', ', 'words', '.', ''] ['Words', ', ', 'words', ', ', 'words', '.', '']
>>> re.split('\W+', 'Words, words, words.', 1) >>> re.split('\W+', 'Words, words, words.', 1)
['Words', 'words, words.'] ['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 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 the string, the result will start with an empty string. The same holds for
...@@ -605,6 +607,9 @@ form. ...@@ -605,6 +607,9 @@ form.
>>> re.split("(?m)^$", "foo\n\nbar\n") >>> re.split("(?m)^$", "foo\n\nbar\n")
['foo\n\nbar\n'] ['foo\n\nbar\n']
.. versionchanged:: 2.7,3.1
Added the optional flags argument.
.. function:: findall(pattern, string[, flags]) .. function:: findall(pattern, string[, flags])
...@@ -625,7 +630,7 @@ form. ...@@ -625,7 +630,7 @@ form.
match. match.
.. function:: sub(pattern, repl, string[, count]) .. function:: sub(pattern, repl, string[, count, flags])
Return the string obtained by replacing the leftmost non-overlapping occurrences 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, of *pattern* in *string* by the replacement *repl*. If the pattern isn't found,
...@@ -650,6 +655,8 @@ form. ...@@ -650,6 +655,8 @@ form.
... else: return '-' ... else: return '-'
>>> re.sub('-{1,2}', dashrepl, 'pro----gram-files') >>> re.sub('-{1,2}', dashrepl, 'pro----gram-files')
'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 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 expression flags, you must use a RE object, or use embedded modifiers in a
...@@ -670,12 +677,18 @@ form. ...@@ -670,12 +677,18 @@ form.
character ``'0'``. The backreference ``\g<0>`` substitutes in the entire character ``'0'``. The backreference ``\g<0>`` substitutes in the entire
substring matched by the RE. 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, Perform the same operation as :func:`sub`, but return a tuple ``(new_string,
number_of_subs_made)``. number_of_subs_made)``.
.. versionchanged:: 2.7,3.1
Added the optional flags argument.
.. function:: escape(string) .. function:: escape(string)
......
...@@ -156,16 +156,16 @@ def search(pattern, string, flags=0): ...@@ -156,16 +156,16 @@ def search(pattern, string, flags=0):
a match object, or None if no match was found.""" a match object, or None if no match was found."""
return _compile(pattern, flags).search(string) 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 """Return the string obtained by replacing the leftmost
non-overlapping occurrences of the pattern in string by the non-overlapping occurrences of the pattern in string by the
replacement repl. repl can be either a string or a callable; replacement repl. repl can be either a string or a callable;
if a string, backslash escapes in it are processed. If it is if a string, backslash escapes in it are processed. If it is
a callable, it's passed the match object and must return a callable, it's passed the match object and must return
a replacement string to be used.""" 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). """Return a 2-tuple containing (new_string, number).
new_string is the string obtained by replacing the leftmost new_string is the string obtained by replacing the leftmost
non-overlapping occurrences of the pattern in the source non-overlapping occurrences of the pattern in the source
...@@ -174,12 +174,12 @@ def subn(pattern, repl, string, count=0): ...@@ -174,12 +174,12 @@ def subn(pattern, repl, string, count=0):
callable; if a string, backslash escapes in it are processed. callable; if a string, backslash escapes in it are processed.
If it is a callable, it's passed the match object and must If it is a callable, it's passed the match object and must
return a replacement string to be used.""" 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, """Split the source string by the occurrences of the pattern,
returning a list containing the resulting substrings.""" 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): def findall(pattern, string, flags=0):
"""Return a list of all non-overlapping matches in the string. """Return a list of all non-overlapping matches in the string.
......
...@@ -170,6 +170,8 @@ Core and Builtins ...@@ -170,6 +170,8 @@ Core and Builtins
- Issue #4748: Lambda generators no longer return a value. - Issue #4748: Lambda generators no longer return a value.
- The re.sub(), re.subn() and re.split() functions now accept a flags parameter.
Library Library
------- -------
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment