大家好我有一个问题,我有一个这样的字符串:
interface GigabitEthernet0/3/0/0
description PhysicalInterface
!
interface GigabitEthernet0/3/0/0.100
description Vlan100
dot1q vlan 100
!
multicast-routing
address-family ipv4
interface TenGigE0/2/0/0.3880
! Disable this interface under multicast-routing section:
disable
!
router static
address-family ipv4 unicast
GigabitEthernet0/3/1/4.3999 192.168.100.105
所以我想使用类似选择之间的东西:界面和! 喜欢:
interface GigabitEthernet0/3/0/0
description PhysicalInterface
!
interface GigabitEthernet0/3/0/0.100
description Vlan100
dot1q vlan 100
!
interface TenGigE0/2/0/0.3880
!
我尝试了很多不同的方法:
interface(.*?)\n
(interface(.*?)|\n{2,})
等等(我已经忘记了其他方式)
你有什么推荐的人吗?
答案 0 :(得分:1)
答案 1 :(得分:1)
为了匹配一些文本,包括两个字符串之间的换行符,您需要使用惰性点匹配技术和DOTALL(或其他术语,单行)修饰符:.*?
。
使用PCRE正则表达式模式时(SublimeText使用此正则表达式),您可以使用此修饰符的内联版本:(?s)
。
延迟点匹配可确保开始和最左端边界之间的匹配。 1 q
将1 q 4q
与1.*?q
模式进行匹配。贪婪匹配1.*q
将匹配整个字符串。
因此,在您的情况下,您可以使用以下正则表达式:
(?s)interface.*?!
|1 | 2 |3|4
在这里,
interface
字符串!
作为结束边界