2017-09-25 1 views
0

설정 파일을 구문 분석하고 웹 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-abhishek LB-SG-PR-443-V1-abhishek

바인드 파운드 VServer가 LB-VS-PR-443

-v1-abhishek 프록시 LB-SG-PR-443-V1-abhishek 프록시 그것은 abhishek까지 단 1 레코드를 반환해야하지만 그것도

가 어떻게이 문제를 제한해야 abhishek 프록시 반환

?

같은 제안을 보내주십시오.

+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)] 
관련 문제