[英]Regular expression multi-line replacement in Python
我想搜索並替換包含換行符的文本塊。
在下面的示例中,當指定了DOTALL標志時,findall的行為與預期的相同,並且為'.'
匹配任何字符,包括換行符。 但是當調用sub時,DOTALL標志似乎沒有任何作用,也沒有找到匹配項。 我只想確認我不能使用'。 用sub替換包含換行符的文本,或者如果我沒有正確調用該函數。
import re
text = """
some example text...
START
bla bla
bla bla
END
"""
print 'this works:', re.findall('START.*END', text, re.DOTALL)
print 'this fails:', re.sub('START.*END', 'NEWTEXT', text, re.DOTALL)
this works: ['START\nbla bla\nbla bla\nEND']
this fails:
some example text...
START
bla bla
bla bla
END
我不確定為什么,但是您必須在re.sub
指定flags=
(文檔使用它)。
print 'this works:', re.sub('START.*END', 'NEWTEXT', text, flags=re.DOTALL)
可能是由於可選的count
參數所致。
編輯:
我認為這畢竟是因為count
參數,因為它也有效:
print 'this works:', re.sub('START.*END', 'NEWTEXT', text, 0, re.DOTALL)
0
表示全部替換。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.