簡體   English   中英

用python正則表達式替換多行

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

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