首页 > 解决方案 > 用python正则表达式替换多行

问题描述

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

一些文本.......\n 按范围分区 (STRT_DTTM)\n 更多文本......\n ); 我想使用正则表达式来查找这些以按范围分区开头并以 ) 结尾的块;并用“这是测试”替换该块。我正在使用以下代码导入重新

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)

你能告诉我哪里出错了。

标签: pythonregexmultiline

解决方案


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

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

推荐阅读