用python正则表达式替换多行

时间:2019-01-18 16:31:01

标签: python regex multiline

我在一个大文件中有一个重复的文本,我想用其他一些文本替换。例如:

一些文字....... \ n 按范围划分(STRT_DTTM)\ n 一些文字... \ n ); 我想使用regex来找到这些以范围划分开始并以)结尾的块;并用“ THIS IS TEST”代替该模块。我正在使用以下代码 汇入

private const int WM_ERASEBKGND = 20;        
protected override void WndProc(ref Message m)
{
    if (m.Msg == WM_ERASEBKGND)
    {
        m.Result = IntPtr.Zero;
    }
    else
    {
        base.WndProc(ref m);
    }
}

能不能让我知道我要去哪里错了。

2 个答案:

答案 0 :(得分:2)

您必须对所有正则表达式保留符号使用\--[\^$.|?*+(){}。最终代码为:

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

答案 1 :(得分:1)

如果您的文本跨越多行,例如

some text.......
partition by range (STRT_DTTM)
some more text......
);

然后,您将必须使用(?s)修饰符来启用.与新行匹配。

Demo

示例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