簡體   English   中英

Python中的正則表達式多行替換

[英]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.

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