如何使用python正则表达式完全匹配“0 0 0”?

时间:2015-02-05 16:34:03

标签: python regex python-2.7

我正在尝试匹配以下命令输出中的所有“ALL ZERO”。

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>

有人可以帮我解决这个问题吗?

是否可以仅将所有零点与精确空格匹配?

1 个答案:

答案 0 :(得分: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