2016-08-08 12 views
1

Ich habe eine Liste, ich jedes Element der Liste mit einer Liste von regex vergleichen will und dann nur drucken, was nicht mit regex.Regex kommt aus einer Konfigurationsdatei gefunden:Python: regex Elemente passen mit Liste

exclude_reg_list= qa*,bar.*,qu*x

Code:

import re 
read_config1 = open("config.ini", "r") 
for line1 in read_config1: 
    if re.match("exclude_reg_list", line1): 
     exc_reg_list = re.split("= |,", line1) 
     l = exc_reg_list.pop(0) 
     for item in exc_reg_list: 
      print item 

ich bin in der Lage, die regexs eins nach dem anderen zu drucken, aber wie regexs gegen die Liste zu vergleichen.

+0

Ich vermute, das sind Wildcard-Muster, nicht Regex-Muster. –

Antwort

1

Statt re Modul zu verwenden, werde ich fnmatch Modul verwenden, da es wie Wildcard-Pattern-Matching aussieht.

Bitte überprüfen Sie diesen Link für weitere Informationen über fnmatch.

Erweitern Sie den Code für die gewünschte Ausgabe:

import fnmatch 
exc_reg_list = [] 

#List of words for checking 
check_word_list = ["qart","bar.txt","quit","quest","qudx"] 

read_config1 = open("config.ini", "r") 
for line1 in read_config1: 
    if re.match("exclude_reg_list", line1): 
     exc_reg_list = re.split("= |,", line1) 

     #exclude_reg_list= qa*,bar.*,qu*x 
     for word in check_word_list: 
      found = 0 
      for regex in exc_reg_list: 
       if fnmatch.fnmatch(word,regex): 
        found = 1 
      if found == 0: 
        print word 

Ausgang:

C:\Users>python main.py 
quit 
quest 

Bitte lassen Sie mich wissen, ob es hilfreich ist.

+1

Vielen Dank, es funktioniert wie erwartet. – cloudvar