Python正则表达式可以找到两种模式之间的所有模式

时间:2018-01-23 11:23:20

标签: python regex

在我的测试日志文件中,我想找到这两者之间的所有行,它可以出现不止一次,我也不想从输出中排除这两个匹配

--- /b/act-builder/sandboxes/ACT-SB-RELEASE_174_THROTTLE-28378/src/junos/usr.sbin/rpd/lib/policy/atf-tests.host,linux ---

*** [atf-run.log]错误代码

第一行模式将始终如“--- / b / act-builder / sandboxes /”

并以“Linux ---”结束

,第二个patern将是“错误代码”

我的解决方案无效: -

QCustomPlot

1 个答案:

答案 0 :(得分:0)

要将包含Error code的行中的所有前一行捕获回包含--- xxx xxxx xxxx ---的上一行,可以按如下方式执行非正则表达式解决方案:

previous = []

with open('atf_log_28378.txt') as f_input:    
    for line in f_input:
        if line.startswith('--- '):
            previous = [line]
        elif 'Error code' in line:
            print ''.join(previous) + line
            previous = []
        elif previous:
            previous.append(line)

这将显示如下条目:

--- /b/act-builder/sandboxes/ACT-SB-RELEASE_174_THROTTLE-28378/src/ui/lib/libjunos-dynamic-render/tests.host,linux ---
Nothing interesting in stderr hello
Failed:../../../../../../src/ui/lib/libjunos-dynamic-render/tests/drt_main.cpp:95: dri_get_dto_count() == 0

****
Failed: 1 errors
Thread test done
*** [all] Error code 255 (ignored)

--- /b/act-builder/sandboxes/ACT-SB-RELEASE_174_THROTTLE-28378/src/junos/usr.sbin/rpd/lib/trace/tests.host,linux ---
    test1: [0.039987s] Failed: Test program received signal 6
    test2: [0.039151s] Failed: Test program received signal 6
[0.079371s]

Failed test cases:
    tmtest:test1, tmtest:test2

Summary for 1 test programs:
    0 passed test cases.
    2 failed test cases.
    0 expected failed test cases.
    0 skipped test cases.
*** [atf-run.log] Error code 1 (ignored)