2017-09-25 116 views
0

我正在尝试解析配置文件并在Web UI上显示输出。但是,我写的一些正则表达式会返回额外的结果。例如,正则表达式匹配以精确单词而非类似单词结束的行

lbvs = lb-vs-pr-443-v1-abhishek 
lb_vserver_binding = '^bind\s+lb\s+vserver\s+%s\s+([^\s+]+)' %(lbvs) 
for line in lb_file_memory: 
     if re.match(lb_vserver_binding, line): 
      grouped_data = re.search(lb_vserver_binding, line).groups() 
      data = grouped_data[0] 
      return data 

这将返回结果,但也会导致额外的输出。 例如,

绑定磅的vserver LB-VS-PR-443-V1-阿布舍克巴克LB-SG-PR-443-V1-阿布舍克巴克

绑定磅的vserver LB-VS-PR-443 -V1-阿布舍克代理LB-SG-PR-443-V1-阿布舍克代理

它应该只返回第一个记录,直到阿布舍克但它也返回阿布舍克代理

我应该如何限制这种?

请提供相同的建议。

+0

你能更详细地描述你想搭配什么?说它应该匹配第一行而不是第二行是不够的。 – CAustin

+0

因此,当lbvs是'lb-vs-pr-443-v1-abhishek'时,我希望它只匹配以abhishek结尾的条目,就像返回的第一行有'lb-sg-pr-443-v1-abhishek ”。但是,它也会返回具有'abhishek-proxy','abhishek-st','abhishek-dc'的条目。 –

+0

所以比赛应该以'bind'开始并以'abhishek'结束? – CAustin

回答

0

如果你想与'abhishek'为此匹配,你可以试试这个:

import re 
final_list = [line for line in lb_file_memory if re.findall("abhishek$", line)] 
相关问题