删除文件的正则表达式匹配部分

问题描述:

我有一个文件,我需要删除正则表达式匹配部分,并将剩余的行写入文件。删除文件的正则表达式匹配部分

正则表达式匹配代码来删除文件:

import re 
with open("in1.txt") as f: 
    lines = f.read() 
    m = re.findall(r'(?s)(my _car_\s*.*?)my', lines) 

输入文件:

my _car_(10) 
    skoda 
    audi 

my home 
good 

my _car_(11) 
benz 

预期输出:

my home 
good 

请帮我解决这个问题,答案将不胜感激!

+0

可能重复http://stackoverflow.com/questions/25553575/parse- using-regex-and-print-the-line) – Dalorzo 2014-08-28 17:59:02

+0

澄清:您试图删除所有以符合正则表达式的行之后的空格开头的行? – 2014-08-28 18:01:45

+0

不,我需要盲目删除匹配正则表达式的行 – 2014-08-28 18:03:44

import re 
with open("in1.txt") as f: 
    lines = f.read() 
    m = re.sub(r'(?s)my _car_.*?(?=my|$)', '', lines) 
    m = re.sub(r'\n+', '\n', m) 
    print m, 
的[解析使用正则表达式和打印线(
+0

其未被删除,请帮忙! – 2014-08-28 18:36:52

+1

您需要打开文件并将'm'的内容写入文件。 – 2014-08-28 18:41:14

假设你能够行写出来,this regex replacement可能是你在找什么

lines = re.sub(r'(?s)(my _car_\s*.*?)(my|$)', r'\2', lines).strip() 

听起来好像你不知道怎么写出来的文件。转储文本到一个名为文件out.txt

with open('out.txt', 'w') as f: 
    f.write(lines) 
+0

我得到相同的'文件它没有删除! – 2014-08-28 18:35:15