无法匹配多行的正则表达式。 我尝试了一些,但没有运气。
首先尝试: ((?:\ b#show)(?:。* \ n?){6})
结果:失败。发现线条可以在5-8之间的任何地方,有时更少或更多。所以匹配6次是行不通的。
第二次尝试: (小于?=#\ n)的(。?显示*版本)
结果:失败:虽然我在其他比赛中成功使用了类似的正则表达式,但在任何事情上都不匹配。
字符串我正在尝试匹配。
wgb-car1# show startup-config
Using 6149 out of 32768 bytes
!
! NVRAM config last updated at 15:50:05 UTC Wed Oct 1 2014 by user
!
version 12.4
no service pad
service timestamps debug datetime msec
service timestamps log datetime msec
service password-encryption
!
我正在尝试匹配从show到版本号的所有内容。
此正则表达式(?s)#show(。*)version 但我不知道如何获取数字,因为它们可以是小数的任意组合,但总是数字。
答案 0 :(得分:1)
答案 1 :(得分:0)
尝试将新行匹配到版本号,然后再匹配换行符。您可以使用(?sm:show.*\nversion)
获取多行行为(使用(?sm:...)
设置),然后使用.*$
之后的非多线行为。
答案 2 :(得分:0)
一个答案(除其他外)使用pos。先行:
\#\ show
([\s\S]+?)
(?=version)
<小时/>
完整Python
示例:
import re
string = """
wgb-car1# show startup-config
Using 6149 out of 32768 bytes
!
! NVRAM config last updated at 15:50:05 UTC Wed Oct 1 2014 by user
!
version 12.4
no service pad
service timestamps debug datetime msec
service timestamps log datetime msec
service password-encryption
!"""
rx = re.compile(r'''
\#\ show
([\s\S]+?)
(?=version)
''', re.VERBOSE)
matches = [match.group(0) for match in rx.finditer(string)]
print(matches)
# ['# show startup-config\nUsing 6149 out of 32768 bytes\n!\n! NVRAM config last updated at 15:50:05 UTC Wed Oct 1 2014 by user\n!\n']