Python 2.7 Python—匹配一行中某个单词的一部分,并在一行结束前输入多个单词

Python 2.7 Python—匹配一行中某个单词的一部分,并在一行结束前输入多个单词,python-2.7,python-3.x,Python 2.7,Python 3.x,我现在有一个配置文件,它的开头是“ltm AZ2b”,后面是几行配置,最后是vs index作为行的结尾 下面是一个例子: ltm虚拟ync产品环境-VS{ ..... ..... } ... vs指数56 --这下面是另一个配置集: ltm虚拟ync产品环境-VS-AZ2b{ ..... ..... } ... vs指数45 正如您在上面看到的(也突出显示),有多组配置,每一组都以,-VS(此下的多行配置)开头,另一组类似配置以相同的名称但以AZ2b开头,例如:-VS-AZ2b(此下的多行

我现在有一个配置文件,它的开头是“ltm AZ2b”,后面是几行配置,最后是vs index作为行的结尾

下面是一个例子:


ltm虚拟ync产品环境-VS{ ..... ..... } ... vs指数56

--这下面是另一个配置集:

ltm虚拟ync产品环境-VS-AZ2b{ ..... ..... } ... vs指数45


正如您在上面看到的(也突出显示),有多组配置,每一组都以,-VS(此下的多行配置)开头,另一组类似配置以相同的名称但以AZ2b开头,例如:-VS-AZ2b(此下的多行配置)

我试图只提取以-VS-AZ2b开始并以其VS索引结束的配置集

我已经编写了以下代码,但效果不太好:


进口稀土

fhandle=open('C:/Python Programs/Active.txt','r') str=fhandle.read()

y=re.findall('^.+AZ2b.+?vs索引[0-9].',str,re.DOTALL)

对于y中的行: 行=行。替换('\n',“\n”) 打印行


我得到的输出是所有东西——包括带有-VS的配置集。不知道为什么。有人能帮忙吗

只是为了检查一下,我取了一个文件,只添加了带有-VS的配置集,程序没有返回任何内容,所以我猜代码只是部分正确


谢谢!

实际上我已经让它工作了。我必须用这种方式修改正则表达式:

y=re.findall('^.+AZ2b[\s\s]*?.+vs索引[0-9]。\n}',str,re.MULTILINE)

[\s\s]*?在正则表达式中丢失。我从stackflow中的此处获得此信息:

此外,re.DOTALL在这方面的工作不是很好,因为它匹配所有内容,所以我不得不使用re.MULTILINE

谢谢大家