多线正则表达式python

时间:2014-11-18 13:21:43

标签: python regex

我正在尝试进行一些文本文件解析,在整个文件中重复此模式:

VERSION.PROGRAM:program_name
VERSION.SUBPROGRAM:sub_program_name

我的意图是,给定一个progra_name,检索上面提到的每个文本块的sub_program_name。

我有以下函数来查找文本是否实际存在,但是不打印sub_program_name:

def find_subprogram(program_name):
    regex_string = r'VERSION.PROGRAM:%s\nVERSION.SUBPROGRAM:.' % program_name
    with open('file.txt', r) as f:
    match = re.search(regex_string, f.read(), re.DOTALL|re.MULTILINE)
         if match:
            print match.group()

我会感谢一些帮助或提示。 感谢

2 个答案:

答案 0 :(得分:2)

你的正则表达式有拼写错误,正在寻找PRGRAM

答案 1 :(得分:1)

如果要搜索多行,则不希望使用MULTILINE修改器。它的作用是将每一行视为与开头和结尾匹配的独立实体。

您也没有使用有效的正则表达式匹配技术。您应该查找如何正确使用正则表达式。

要匹配任何字符,请使用(.*)而不是%s

这是example

使用VERSION\.PROGRAM:YOURSTRING\nVERSION\.SUBPROGRAM:(.*)会正确匹配群组

re.compile('VERSION\.PROGRAM:%s\nVERSION\.SUBPROGRAM:(.*)'%(re.escape(yourstr)))