为什么不能在Python正则表达式工作
问题描述:
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)
答
的re.sub
最后一个参数是要做的替换计数。 如果你想选择更换,编译正则表达式:
>>> r = re.compile(r'^AN', re.IGNORECASE)
>>> my_str = 'AN simple example'
>>> r.sub('A', my_str)
'A simple example'
答
如果你想不敏感的替代使用不敏感的选项:
str = 'an simple example'
print re.sub(r'(?i)an', 'A', str)
答
正如变成真正的指出,第三个参数是替换的次数去做。
的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
此外,不要使用'str'作为变量名称。它是一个内置的字符串 – jdi 2012-03-21 09:28:19