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'