Python正则表达式在两个模式之间查找所有

2024-03-28 13:04:29 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的测试日志文件中,我想找到这两个之间的所有行它可以发生多次,而且我不想从输出中排除这两个匹配

---/b/act-builder/sandboxes/act-SB-RELEASE\u 174\u THROTTLE-28378/src/junos/usr.sbin/rpd/lib/policy/atf文件-测试.主机,linux操作系统--

***[自动变速箱油-运行.log]错误代码

其中第一行模式总是以“--/b/act builder/sandboxes/”开头

以“Linux”结尾

第二种是“错误代码”

我的解决方案不是工作:你知道吗

  file = open('atf_log_28378.txt', "r")
    for result in re.findall('^--- /b/act-builder/(.*?)Error code', file.read(), re.S):
        print 'Failed test cases:' + result + '\n'


Expected Output will be the one or more combination of these:-
--- /b/act-builder/sandboxes/ACT-SB-RELEASE_174_THROTTLE-28378/src/junos/usr.sbin/rpd/lib/policy/atf-tests.host,linux ---
    test1: [0.040247s] Failed: Test program received signal 6
    test2: [0.039347s] Failed: Test program received signal 6
[0.079804s]
scu_dcu_test (12/12): 1 test cases
    test1: [0.039158s] Failed: Test program received signal 6
[0.039262s]
Failed test cases:
    aspath_test:test1, aspath_test:test2, aspath_test:test3, aspath_test:test4, cbf_test:test1, com_test:test1, com_test:test2, cmgr_test:test1, cmgr_test:test2, lsp_regex_test:test1, match_cache_test:test1, match_cache_test:test2, match_cache_test:test3, match_cache_test:test4, match_cache_test:test5, mt_test:test1, path_attr_err_test:test1, path_attr_err_test:test2, plist_test:test1, policy_namelist_test:test1, policy_te_test:test1, policy_te_test:test2, scu_dcu_test:test1
Summary for 12 test programs:
    0 passed test cases.
    23 failed test cases.
    0 expected failed test cases.
    0 skipped test cases.
*** [atf-run.log] Error code 1 (ignored)

Tags: testlogcachematchbuilderpolicyacttest1
1条回答
网友
1楼 · 发布于 2024-03-28 13:04:29

要捕获从包含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)

相关问题 更多 >