python中的正则表达式来捕获2个单词之间的所有内容

2024-04-24 11:58:40 发布

您现在位置:Python中文网/ 问答频道 /正文

请考虑以下几点:(它存储在变量op中)

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

但是它会产生一个错误

请提出一个替代方案


Tags: runipre内容searchsecintprint
3条回答

也可以使用多行修饰符。你知道吗

>>> 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'
(?<=\bsec\smtu\n)(.*?)(?=#)

试试看这个。用re.DOTALL。见演示。你知道吗

http://regex101.com/r/dZ1vT6/54

两种选择:

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

相关问题 更多 >