PLS考虑以下之间的一切之间捕获:(这被存储在可变的运算)正则表达式到2个词语
>>> print op
sho run int lo0 | sec mtu
ip mtu 800
R4#
我需要捕捉一切后“秒MTU”开始之前“#”
所以我试图
str=re.search(r'(\bsec\smtu)(\n.*){2}',op,re.M|re.I)
print str.group(1)
但是它产生一个错误
请提出替代方案
PLS考虑以下之间的一切之间捕获:(这被存储在可变的运算)正则表达式到2个词语
>>> print op
sho run int lo0 | sec mtu
ip mtu 800
R4#
我需要捕捉一切后“秒MTU”开始之前“#”
所以我试图
str=re.search(r'(\bsec\smtu)(\n.*){2}',op,re.M|re.I)
print str.group(1)
但是它产生一个错误
请提出替代方案
两个选项:
>>> s = '''sho run int lo0 | sec mtu
... ip mtu 800
... R4#'''
>>> re.findall('sec mtu(.*)#', s, re.DOTALL)[0]
'\n ip mtu 800\nR4'
>>> s[s.find('sec mtu')+7:s.find('#')]
'\n ip mtu 800\nR4'
你可以用多修饰也。
>>> re.findall('sec mtu([^#]*)#', op, re.M)[0]
'\n ip mtu 800\nR4'
>>> m = re.findall('sec mtu([^#]*)#', op, re.M)[0]
>>> print m
ip mtu 800
R4
>>> re.search(r'(?:\bsec\smtu)([^#]*)',op, re.M|re.I).group(1)
'\n ip mtu 800\nR4'