2012-03-21 195 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

相關問題