在这种情况下,我应该使用什么正则表达式?

时间:2018-09-03 20:34:48

标签: python regex

我想创建一个正则表达式,以仅获取以日期开头的行(忽略其他行)以及上面带有单词“ Prefix”的行。正则表达式应如何显示?

我的txt文件具有以下结构:

                                                        Prefix : 0051601

    Data     Material                                       No. OS  Hist. Nr/Controle        Quant.       Vlr.Unit.            Vlr.Total 
 ----------------------------------------------------------------------------------------------------------------------------------------
 13/01/2008  00101050 Lampada farol H5 24V                          003   4863                2,000        9,870556              19,7411 
                                                                                        ====== Total dia 13/01/2008 ======
                                                                     Entradas :                                                         
                                                                     Saídas   :               2,000                              19,7411
                                                                     -------------------------------------------------------------------

主要代码是:

import glob, os
import re

os.chdir("./txtfiles/")

for file in glob.glob("*.txt"):

    with open(file) as f:
        content = f.readlines()
        # not working, just for test purpose
        result = re.match(r'Prefix', content, re.M|re.I)
        if result:
            print(content)
        else:
            print "no match found!"

2 个答案:

答案 0 :(得分:1)

如果没有re,接下来的情况又如何呢?假设在行2和5处唯一带有/的行...

   with open(file) as f:
        for line in f:
            if line[2]==line[5]=='/' or 'Prefix' in line:
                print(line)

答案 1 :(得分:1)

您可以使用此正则表达式来识别这些行。
使用findall获取所有行。

r"(?im)(?:^[^\S\r\n]*\d+/\d+/\d+|.*\bprefix).*"

https://regex101.com/r/rAl3r6/1