2012-03-21 120 views
0
str = 'an simple example' 
print re.sub(r'^AN', 'A', str, re.I) 

据预计打印A simple example
但是,它仍然打印an simple example为什么不能在Python正则表达式工作

Python版本2.7(Fedora的x84_64)

+6

此外,不要使用'str'作为变量名称。它是一个内置的字符串 – jdi 2012-03-21 09:28:19

回答

2

re.sub最后一个参数是要做的替换计数。 如果你想选择更换,编译正则表达式:

>>> r = re.compile(r'^AN', re.IGNORECASE) 
>>> my_str = 'AN simple example' 
>>> r.sub('A', my_str) 
'A simple example' 
1

如果你想不敏感的替代使用不敏感的选项:

str = 'an simple example' 
print re.sub(r'(?i)an', 'A', str) 
2

正如变成真正的指出,第三个参数是替换的次数去做。

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) 

顺便说一句,str已经是一个python函数(但没有保留关键字), 所以重新定义str可能会导致奇怪的问题。

+0

(只需添加,'re.sub'中的标志自2.7开始) – bereal 2012-03-21 10:30:48

相关问题