簡體   English   中英

為什么它在Python正則表達式中不起作用

[英]Why it doesn't work in Python regular expression

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)

re.sub的最后一個參數是要執行的替換計數。 如果要用選項替換,請編譯正則表達式:

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

正如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)

順便說一句, str已經是一個python函數(但沒有保留關鍵字),因此重新定義str可能會導致奇怪的問題。

如果要使用不敏感替換,請使用不敏感選項:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM