为什么不忽略标志(re.I)在re.sub()中工作

the*_*eta 34 python regex

来自pydoc:

re.sub = sub(pattern,repl,string,count = 0,flags = 0)
返回通过替换repl替换字符串中模式的最左边非重叠事件而获得的字符串.repl可以是字符串也可以是可调用的; 如果处理了一个字符串,则反斜杠转义.如果它是可调用的,则传递匹配对象并且必须返回要使用的替换字符串.

示例代码:

import re
print re.sub('class', 'function', 'Class object', re.I)
Run Code Online (Sandbox Code Playgroud)

除非我将模式更改为"Class",否则不会进行替换.

文档没有提到有关此限制的任何内容,因此我假设我可能做错了什么.

这是怎么回事?

And*_*ron 67

在我看来你应该这样做:

import re
print(re.sub('class', 'function', 'Class object', flags=re.I))
Run Code Online (Sandbox Code Playgroud)

如果没有这个,re.I参数将传递给count参数.


ekh*_*oro 8

flags参数是第五一个-要传递的值re.I作为count参数(一个容易犯的错误).