正则表达式功能可运行文件中的每一行,并提取带有特定单词的整行

时间:2019-04-10 02:39:05

标签: python regex

我正在使用python中的正则表达式代码来搜索文件中每行的正则表达式模式并提取所需的模式文件的几行看起来像这样

The Liz Copeland

2018年4月1日,星期一 不,停留歌曲()听过评论

我想从文件中提取标题和标题 -每个标题的行中都有Liz Copeland,行尾有5个制表符,输出应显示如下

The Liz Copeland

-每个标头都有一个制表符,后跟5个制表符分隔的列标头,输出如下所示

  

不。保持歌曲()听完评论

我写了一个提取正则表达式行的函数

title = re.compile(r'([^.?!]*[.?\s!]Liz Copeland [^.?!]*[.?\s!])\t')

header = re.compile(r'\t\w+.\t.+')

with open(file) as f:
    for line in f:
        m_show = re.match(title, line)
        m_header = re.match(header, line)

上面的代码并没有用匹配的模式提取所有行,而是给了我不必要的结果

请帮助我提供代码。预先谢谢你

2 个答案:

答案 0 :(得分:0)

如何使用以下正则表达式:

.*?Liz Copeland.+?\(\d{1,2}[ap]m-\d{1,2}[ap]m\)\s+$

演示:

Testing with InMemory

它与Liz Copeland所在的整行与结尾空格匹配

答案 1 :(得分:0)

要获取标题,可以在单词边界Liz Copeland之间匹配名称\b,并在字符串末尾匹配5个制表符:

.*?\bLiz Copeland\b.*\t{5}

Regex demo

要匹配标题,您可以使用:

\tNo\.\tArtist\tSong\tAlbum \(Label\)\tComment\b

Regex demo

不是最后一行buy 44661 Laurent Garnier The Man with the Red Face像示例数据中的前一行一样错过了括号之间的内容。