如何使用python正则表达式匹配中间的数字?
我试图为以下命令输出设置通过/失败标准如何使用python正则表达式匹配中间的数字?,python,regex,python-2.7,Python,Regex,Python 2.7,我试图为以下命令输出设置通过/失败标准 router-7F2C13#show app stats gmail on TEST/switch1234-15E8CC -------------------------------------------------------------------------------- APPLICATION BYTES_IN BYTES_OUT NUM_FLOWS --------------
router-7F2C13#show app stats gmail on TEST/switch1234-15E8CC
--------------------------------------------------------------------------------
APPLICATION BYTES_IN BYTES_OUT NUM_FLOWS
--------------------------------------------------------------------------------
gmail 0 0 0
--------------------------------------------------------------------------------
router-7F2C13#
我只需要匹配“NUM_FLOWS”。如果为“零”,则视为失败。
如果其“大于或等于1”,则视为通过
FAIL criteria example:
======================
router-7F2C13#show app stats gmail on TEST/switch1234-15E8CC
--------------------------------------------------------------------------------
APPLICATION BYTES_IN BYTES_OUT NUM_FLOWS
--------------------------------------------------------------------------------
gmail 0 0 0
--------------------------------------------------------------------------------
router-7F2C13#
PASS criteria example: (Greater than or equal to 1)
======================
router-7F2C13#show app stats gmail on TEST/switch1234-15E8CC
--------------------------------------------------------------------------------
APPLICATION BYTES_IN BYTES_OUT NUM_FLOWS
--------------------------------------------------------------------------------
gmail 0 0 1
--------------------------------------------------------------------------------
router-7F2C13#
请指导我怎么做
NUM_FLOWS\n-+[\s\S]*?(\d+)\s*-+
你可以试试这个,抓拍
见演示
由于这是命令输出,您可以将命令的输出导入Python脚本,并使用
fileinput
模块对其进行处理:
import fileinput
for line in fileinput.input():
if fileinput.filelineno() == 5:
# split the line on whitespace, and take the last item.
x = int(line.split()[-1])
print('PASS' if x else 'FAIL')
break # so it won't process more lines past 5
包含通过标准的pass.xxx
和包含不通过标准的fail.xxx
的结果:
c:\> type fail.xxx | check.py
FAIL
c:\> type pass.xxx | check.py
PASS
你试过自己做些什么吗?你可能不需要正则表达式。只需在目标行上使用
str.split()
方法,并获取结果列表的最后一个元素。@PM 2Ring。。谢谢你的评论。我是python新手。请告诉我如何使用split命令执行此操作。这些是单独的文件吗?“gmail”行总是文件中的第五行吗?@markTolonen。是的,总是第五行。谢谢你的回答。但它总是打印为“通行证”。你能检查一下这个吗。如果为零,则应打印“FAIL”。
c:\> type fail.xxx | check.py
FAIL
c:\> type pass.xxx | check.py
PASS