我正在尝试进行一些文本文件解析,在整个文件中重复此模式:
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()
我会感谢一些帮助或提示。 感谢
答案 0 :(得分:2)
你的正则表达式有拼写错误,正在寻找PRGRAM
。
答案 1 :(得分:1)
如果要搜索多行,则不希望使用MULTILINE修改器。它的作用是将每一行视为与开头和结尾匹配的独立实体。
您也没有使用有效的正则表达式匹配技术。您应该查找如何正确使用正则表达式。
要匹配任何字符,请使用(.*)
而不是%s
。
这是example
使用VERSION\.PROGRAM:YOURSTRING\nVERSION\.SUBPROGRAM:(.*)
会正确匹配群组
re.compile('VERSION\.PROGRAM:%s\nVERSION\.SUBPROGRAM:(.*)'%(re.escape(yourstr)))