2015-02-05 87 views
0

我想從以下命令輸出中匹配所有「所有ZERO」。如何準確使用python正則表達式匹配「0 0 0」?

router-7F2C13#show app stats gmail on TEST/switch1234-15E8CC 
-------------------------------------------------------------------------------- 
    APPLICATION   BYTES_IN   BYTES_OUT   NUM_FLOWS 
-------------------------------------------------------------------------------- 
    gmail    0     0     0 
-------------------------------------------------------------------------------- 
router-7F2C13# 

我需要滿足以下要求:

我用下面的代碼嘗試:

x="""router-7F2C13#show app stats gmail on TEST/switch1234-15E8CC 
-------------------------------------------------------------------------------- 
    APPLICATION   BYTES_IN   BYTES_OUT   NUM_FLOWS 
-------------------------------------------------------------------------------- 
    gmail    0     0     0 
-------------------------------------------------------------------------------- 
router-7F2C13#""" 

def pass_fail_criteria(x): 
    if int(re.findall(r"NUM_FLOWS\n-+[\s\S]*?(\d+)\s*-+"): 
     print "FAIL" 
    else: 
     print "PASS" 

print pass_fail_criteria(x)  

但它會引發以下錯誤:

C:\Users\test\Desktop>python test_regexp.py 
    File "test_regexp.py", line 17 
    if int(re.findall(r"NUM_FLOWS\n-+[\s\S]*?(\d+)\s*-+"): 
                 ^
SyntaxError: invalid syntax 

C:\Users\test\Desktop> 

誰能幫我解決這個問題?

是否有可能匹配所有零與確切的空格?

+3

有兩個問題,在這裏...答案第一個是...關閉**支架! – 2015-02-05 16:34:53

回答

1

您可以嘗試像

\s*\w+\s+(\d+)\s+(\d+)\s+(\d+) 

正則表達式這似乎符合

gmail 0 0 0 

的替代(按您的要求)是相匹配的文字0的。只是0替換數字匹配:

\s*\w+\s+(0)\s+(0)\s+(0) 

注意,(括號內)是分組,這取決於你如何將使用正則表達式可能沒有必要。如果你只是測試一場比賽,你可以放棄它們。

那麼你或許應該寫一個函數來保證比賽都爲0

你可以看看debuggex

Regular expression visualization

Debuggex Demo

+0

感謝您的回答。是否可以匹配所有確切的零,而不使用函數。我的基本想法是在Robot Framework中使用「不匹配正則表達式」關鍵字。 URL「http://robotframework.googlecode.com/hg/doc/libraries/BuiltIn.html?r=2.6.1#Should%20Match%20Regexp」。 – rcubefather 2015-02-05 16:50:21

+0

\ s + \ w + \ s +(0)\ s +(0)\ s +(0)...我可以使用這個嗎?它有效嗎? – rcubefather 2015-02-05 16:55:02

+0

絕對如此。按照debuggex鏈接,複製粘貼一些代碼,並處理匹配。 – 2015-02-05 16:56:43

相關問題