2016-03-15 156 views
0

我輸入一個文本文件(行)(所有字符串)。我試圖使card_type成爲true,以便它可以輸入if語句,但是,它永遠不會輸入IF語句。從打印線出來的輸出是:Python正則表達式匹配

imm48-1gb-sfp/imm48-1gb-sfp 
imm-2pac-fp3/imm-2pac-fp3 
imm5-10gb-xfp/imm5-10gb-xfp 
sfm4-12/sfm4-12 

這是代碼:

print str(card_type)    
    if card_type == re.match(r'(.*)/(.*)',line): 
     card_type = card_type.group(1) 

回答

2

re.match將返回一個MatchObject如果有匹配或None如果沒有。下面的代碼之前/性格捕捉部分:

import re 

line = 'imm48-1gb-sfp/imm48-1gb-sfp' 
match = re.match(r'(.*?)/', line) 
if match: 
    card_type = match.group(1) 
    print card_type 
+0

確實,我已經改變了這個例子使用非貪婪模式'。*? '這將在輸入有多個'/'字符的情況下起作用。 – niemmi

1

CARD_TYPE是一個字符串。 re.match()返回布爾值(true或false,正則表達式是否匹配字符串)。

由於它們是不同的類型,它們不能相等,if條件不會被滿足。

+1

根據Python文檔['re.match'(https://docs.python.org/2/library/re.html#re.match)將會返回一個['MatchObject'](https://docs.python.org/2/library/re.html#re.MatchObject) – niemmi