2013-01-06 79 views
1

我有以下類。但是,試圖通過變量x的re.match當它不出現正確的輸入什麼我把它返回「無效」在Python類中傳遞變量

class validate: 
    def __init__(self, input_value): 
     self.input_value = input_value 
    def macaddress(self, oui): 
     self.oui = oui 
     #oui = 0, input deemed valid if it matches {OUI:DEVICE ID}. 
     #oui = 1, input deemed valid if it matches {OUI}. 
     if self.oui == 0: 
      x = 5 
     elif self.oui == 1: 
      x = 2 
     if re.match("[0-9a-fA-F]{2}([.-: ][0-9a-fA-F]{2}){x}$", self.input_value): 
      return "valid" 
     else: 
      return "invalid" 

我應該通過VAR X以其他方式工作?

感謝,

回答

5

插入x到字符串這種方式(使用string formatting):

的Python < 2.7:

if re.match("[0-9a-fA-F]{2}([.-: ][0-9a-fA-F]{2}){%d}$" % x, self.input_value): 

但是如果你使用的formatting蟒蛇3路,你的正則表達式干擾。
它可以更乾淨(但更慢)使用串聯。

無連接:

if re.match("[0-9a-fA-F]\{2\}([.-: ][0-9a-fA-F]\{2\}){0}$".format(x), self.input_value): 

隨着串聯:

if re.match("[0-9a-fA-F]{2}([.-: ][0-9a-fA-F]{2})" + x + "$", self.input_value): 

注:如果隱式類型轉換是不可能失敗。

如果你只是把{x}放在你的字符串中,Python實際上不會對它做任何事情,除非應用了字符串格式。