2017-09-25 8 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 

これは結果を返しますが、余分な出力も発生します。 例えば、

バインドLBのvserver LB-VS-PR-443-V1-アビシェークLB-SG-PR-443-V1-アビシェーク

バインドLBのvserver LB-VS-PR-443 -V1-アビシェーク・プロキシLB-SG-PR-443-V1-アビシェーク・プロキシ

私はこれを制限する必要がありますどのようにそれはアビシェークまでのみ第一レコードを返されている必要がありますが、それはまた、アビシェーク・プロキシ

を返します。 ?

親切にも同じことを提案してください。

+0

をあなたが一致しようとしている正確に何をより詳細に説明することはできますか?最初の行に一致するはずで、2番目の行には一致してはならないと言っても十分ではありません。 – 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)] 
関連する問題