我正在尝试匹配以下命令输出中的所有“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>
有人可以帮我解决这个问题吗?
是否可以仅将所有零点与精确空格匹配?
答案 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。