[英]Multiline replace with python regular expression
我在一個大文件中有一個重復的文本,我想用其他文本替換。 例如:
一些文本....... \\ n按范圍划分(STRT_DTTM)\\ n更多文字...... \\ n); 我想使用正則表達式來查找以范圍分區開頭並以...結尾的這些塊; 並用'THIS IS TEST'替換該塊。 我使用下面的代碼導入re
with open(r"C:\Users\x217838\Desktop\python\input.txt","rt") as in_file:
text = in_file.read()
s = re.compile("^partition by range(.*);\)$)",re.MULTILINE)
replace = re.sub(s, 'THIS IS TEST', text)
print(replace)
你能告訴我出錯的地方嗎?
您必須使用\\來表示所有正則表達式保留符號 - > [\\^$.|?*+(){}
。 最終的代碼是:
import re
text = "partition by range(CANE) uno"
s = re.compile("^partition by range\(.*\)",re.MULTILINE)
replace = re.sub(s, 'THIS IS TEST', text)
print(replace)
結果是:
THIS IS TEST uno
如果您的文本跨越多行,就像這樣,
some text.......
partition by range (STRT_DTTM)
some more text......
);
然后你將不得不使用(?s)
修飾符來啟用.
匹配一條新線。
示例python代碼,
import re
s = '''some text.......
partition by range (STRT_DTTM)
some more text......
);'''
mods = re.sub(r'(?s)partition by range(.*?)\);','THIS IS TEST',s)
print(mods)
打印,
some text.......
THIS IS TEST
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.