2014-10-17 81 views
0

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) 

但是它產生一個錯誤

請提出替代方案

回答

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' 
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'