寻找与一个正则表达式的一些帮助。我的技能是非常基本的,我一直没能找到答案。
我使用正则表达式它去,虽然配置文件,并且要确认端口GigabitEthernet1 / 1/1不中继VLAN 4052-4092。由于配置跨越多行,并且接口和中继语句之间可能存在不同的配置元素,因此我尝试使用以下方法:
GigabitEthernet1\/1\/1[\s\S]*?(vlan.*40[5-8][0-9]|9[12])
这个作品,如果端口GigabitEthernet1 / 1/1在允许的语句40XX VLAN,但如果没有,继续搜索,直到它找到它的下一个界面上的匹配。有没有一种方法可以让我得到的正则表达式来停止寻找,一旦击中1/1/1接口配置的终结?
interface GigabitEthernet1/1/1
description link-to-someswitch-Gi2/0/1
switchport access vlan 3109
switchport trunk allowed vlan 300,301,350,358,800,3109
switchport trunk encapsulation dot1q
switchport trunk native vlan 3109
switchport mode dynamic desirable
srr-queue bandwidth share 40 20 20 20
srr-queue bandwidth shape 10 0 0 0
priority-queue out
no snmp trap link-status
mls qos trust dscp
spanning-tree portfast disable
!
interface GigabitEthernet1/1/2
description link-to-someswitch2-Gi2/0/1
switchport access vlan 3609
switchport trunk allowed vlan 300,301,350,358,800,3609,4088
switchport trunk encapsulation dot1q
switchport trunk native vlan 3109
switchport mode dynamic desirable
srr-queue bandwidth share 40 20 20 20
srr-queue bandwidth shape 10 0 0 0
priority-queue out
no snmp trap link-status
mls qos trust dscp
spanning-tree portfast disable
感谢您的帮助。我应该指出,这个研究所”应用到特定的编程语言,而是进入一个管理系统,支持正则表达式查找元素一个配置文件应该或不应该包括。
答案 0 :(得分:0)
尝试此正则表达式:
GigabitEthernet1\/1\/1(?:(?!interface GigabitEthernet)[\s\S])*(vlan.*40(?:9[12]|[6-8][0-9]|5[2-9]))
说明:
GigabitEthernet1\/1\/1
-匹配GigabitEthernet1/1/1
(?:(?!interface GigabitEthernet)[\s\S])*
-Tempered Greedy Token-匹配0+次出现的不以interface GigabitEthernet
开头的任何字符(vlan.*40(?:9[12]|[6-8][0-9]|5[2-9]))
-匹配vlan
,然后匹配0+次出现的除换行符之外的任何字符,最后匹配4052至4092之间的所需数字