如何删除文件中使用python中的正则表达式确定范围的行?

时间:2011-06-08 18:14:46

标签: python regex lines

我试图通过删除不需要的行来清理一系列文本文件。我想删除以与Regex1匹配的行开头的行,并继续删除,直到找到带有Regex2的行。我需要使用python来做到这一点。我已经使用类似

的sed命令完成了这项工作

sed -r '/regex1/,/regex2/d'

并祝你好运,但我需要能在Windows机器上运行的东西。另外,我希望整个解决方案使用一种语言,而不是在shell和python脚本之间进行管道。任何人有任何想法或帖子指向我?

3 个答案:

答案 0 :(得分:2)

您可以使用re.DOTALL使.匹配换行符来执行此操作:

import re

pattern = re.compile(r"regex1.*?regex2", re.DOTALL)

然后,您可以使用pattern.sub("", data)删除这些行。

答案 1 :(得分:2)

import sys,re

reg_start = 'reg1'
reg_end = 'reg2'

to_print = 1

for line in sys.stdin.readlines():
    if re.search(reg_start, line):
        to_print = 0
    elif re.search(reg_end, line):
        to_print = 1

    if to_print:
        print line,

答案 2 :(得分:0)

在perl中有触发器操作符,可以用作:

perl -ne "print unless /regex1/ .. /regex2/" file

你可以将它转换为python,因为它是解释here