使用python从文件中提取带有字符串的行

使用python从文件中提取带有字符串的行,python,regex,Python,Regex,团队 我想从一个文件中提取一些使用stringstarts和tg_u的行,然后根据下面的正则表达式得到输出..问题是 如果有两行以\结尾,我不确定如何提取该行,如下图所示 我不知道如何删除下面存在的regexp的特殊字符 *****从文件中******* tg_cr_计数器dghbvcvgfv tg_kk_bb a group1 bye bye-bye-hi-hi-hi-1\您可以使用带有和标志的正则表达式 这边走。也将匹配\n,您可以查找以tg开头的任何内容,无需将每个内容都放在[]中,并以双

团队

我想从一个文件中提取一些使用stringstarts和tg_u的行,然后根据下面的正则表达式得到输出..问题是

如果有两行以\结尾,我不确定如何提取该行,如下图所示

我不知道如何删除下面存在的regexp的特殊字符

*****从文件中*******

tg_cr_计数器dghbvcvgfv


tg_kk_bb a group1 bye bye-bye-hi-hi-hi-1\您可以使用带有和标志的正则表达式

这边走。也将匹配\n,您可以查找以tg开头的任何内容,无需将每个内容都放在[]中,并以双精度\n\n或文本结尾\Z结尾:

re.findall结果如下所示:

['tg_cr_counters dghbvcvgfv\n\n', 
 'tg_kk_bb a group1 bye bye bye hi hi hi 1 \\ <<<<\npatch mac hdfh f dgf asadasf dgfgmnhnjgfg\n\n', 
 'tg_cr_counters gthghtrhgh }} ] <<<<<\n\n', 
 'tg_cr_counters fkgnfkmngvd\n']

要启用多行搜索,您需要一次读入多行-如果您的文件太大,这将导致内存问题。

我们是否可以假设当有一行换行时,该行将继续,如果有两行连续的换行,则不会?我不清楚您要提取什么。多行匹配的结束编码是什么?@JETM我要grep的行是以\结尾的多行,当我使用正则表达式时,它只提取以\结尾的第一行,而不是第二行和第三行谢谢..但您正试图从输出中提取,它是从输入文件中提取的,其中多行是从tg_u@CharlesDaniel开始的。我正在创建一个文件,其中包含代码顶部的所有行。然后我从整个文件中提取`f.read`您看到的-----------之间的行,它们是多行匹配。我不太明白你的意思。。。t、 txt包含4条以tg开头的多行和一条前面带有“******”的行,该行来自未捕获的文件*******,因为它不以tg开头_
fn = "t.txt"
with open (fn,"w") as f: 
    f.write("""*****from a file*******

tg_cr_counters dghbvcvgfv

tg_kk_bb a group1 bye bye bye hi hi hi 1 \ <<<<
patch mac hdfh f dgf asadasf \
dgfgmnhnjgfg

tg_cr_counters gthghtrhgh }} ] <<<<<

tg_cr_counters fkgnfkmngvd
""")

import re

with open("extract.txt", "a+") as o, open(fn) as f:
    for m in re.findall(r'^tg_.*?(?:\n\n|\Z)', f.read(), flags=re.M|re.S):
        o.write("-"*40+"\r\n")
        o.write(m)
        o.write("-"*40+"\r\n")

with open("extract.txt")as f:
    print(f.read())
----------------------------------------
tg_cr_counters dghbvcvgfv

----------------------------------------
----------------------------------------
tg_kk_bb a group1 bye bye bye hi hi hi 1 \ <<<<
patch mac hdfh f dgf asadasf dgfgmnhnjgfg

----------------------------------------
----------------------------------------
tg_cr_counters gthghtrhgh }} ] <<<<<

----------------------------------------
----------------------------------------
tg_cr_counters fkgnfkmngvd
----------------------------------------
['tg_cr_counters dghbvcvgfv\n\n', 
 'tg_kk_bb a group1 bye bye bye hi hi hi 1 \\ <<<<\npatch mac hdfh f dgf asadasf dgfgmnhnjgfg\n\n', 
 'tg_cr_counters gthghtrhgh }} ] <<<<<\n\n', 
 'tg_cr_counters fkgnfkmngvd\n']