Python 2.7 Python—匹配一行中某个单词的一部分,并在一行结束前输入多个单词
我现在有一个配置文件,它的开头是“ltm AZ2b”,后面是几行配置,最后是vs index作为行的结尾 下面是一个例子: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虚拟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 谢谢大家