From pydoc:
re.sub = 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.
example code:
import re print re.sub('class', 'function', 'Class object', re.I)
No replacement is made unless I change pattern to 'Class'.
Documentation doesn't mention anything about this limitation, so I assume I may be doing something wrong.
What's the case here?
By default, the count is set to zero, which means the re. sub() method will replace all pattern occurrences in the target string.
The full definition of re.sub is: re.sub(pattern, repl, string[, count, flags]) Which means that if you tell Python what the parameters are, then you can pass flags without passing count : re.sub('^//', '', s, flags=re.MULTILINE) or, more concisely: re.sub('^//', '', s, flags=re.M)
sub() function belongs to the Regular Expressions ( re ) module in Python. It returns a string where all matching occurrences of the specified pattern are replaced by the replace string.
Seems to me that you should be doing:
import re print(re.sub('class', 'function', 'Class object', flags=re.I))
Without this, the re.I
argument is passed to the count
argument.
The flags
argument is the fifth one - you're passing the value of re.I
as the count
argument (an easy mistake to make).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With