str = 'an simple example'
print re.sub(r'^AN', 'A', str, re.I)
预计打印A simple example
但是,它仍然打印an simple example
python版本2.7(Fedora x84_64)
答案 0 :(得分:2)
re.sub
的最后一个参数是要执行的替换计数。
如果要替换选项,请编译正则表达式:
>>> r = re.compile(r'^AN', re.IGNORECASE)
>>> my_str = 'AN simple example'
>>> r.sub('A', my_str)
'A simple example'
答案 1 :(得分:2)
正如bereal所指出的,第三个参数是要做的替换计数。
re.sub
的整个定义是
def sub(pattern, repl, string, count=0, flags=0):
因此,您可以使用
而不是编译正则表达式print re.sub(r'^AN', 'A', str, 0, re.I)
或使用命名参数:
print re.sub(r'^AN', 'A', str, flags=re.I)
BTW,str
已经是python函数(但没有保留关键字),
所以重新定义str会导致奇怪的问题。
答案 2 :(得分:1)
如果您想要不敏感的替换,请使用不敏感选项:
str = 'an simple example'
print re.sub(r'(?i)an', 'A', str)