python:在文件中提取(正则表达式)模式而不经过逐行(多行搜索)

时间:2016-05-19 17:44:38

标签: python regex

我可以通过逐行读取mystring.txt文件并根据re.search(r' pattern',line_txt)方法检查行来提取特定模式。

以下是mystring.txt

`

Client: //home/SCM/dev/applications/build_system/test_suite_linux/unit_testing



Stream: //MainStream/testing_branch

Options:    dir, norm accel, ddl



SubmitOptions:  vis, dir, cas, cat

`

使用python,我可以将流名称作为// MainStream / testing_branch

import re 
with open("mystring.txt",'r') as f:
    mystring= f.readlines()
    for line in mystring:
        if re.search(r'^Stream\:',line):

            stream_name = line.split('\t')[1]
            print stream_name

而不是在循环中逐行进行,如何仅使用re模块提取相同的信息?

3 个答案:

答案 0 :(得分:0)

是的,您可以re.MULTILINE使用re.search(..)

>>> import re
>>> re.search(r'^Stream\:\s([^\n]+)', f.read(), re.MULTILINE).group(1)
'//MainStream/testing_branch'

答案 1 :(得分:0)

您可以一次性阅读该文件并使用re.findall(请注意文件是否太大,将其加载到主内存不是一个好主意)

import re
content = open("input_file").read()
print(re.findall("^Stream: (.*)", content, re.M))

答案 2 :(得分:0)

这是解决方案

f = open(“mystring.txt”)。read()

导入重新

got = re.findall(“Stream:。+ \ n”,f)

got = got [0] .strip()

print(got.split(“:”)[1])