请考虑以下事项:(这存储在变量op中)
>>> print op
sho run int lo0 | sec mtu
ip mtu 800
R4#
我需要捕捉“sec mtu”之后和“#”
之前的所有内容所以我试过
str=re.search(r'(\bsec\smtu)(\n.*){2}',op,re.M|re.I)
print str.group(1)
然而它会产生错误
请提出替代方案
答案 0 :(得分: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'
答案 1 :(得分:0)
答案 2 :(得分:0)
您也可以使用多线修改器。
>>> 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'
答案 3 :(得分:0)