寻找一些帮助的正则表达式。我的技能很初级,我一直找不到答案。
我使用regex通过一个配置文件,并希望确认接口GigabitEthernet1 1/1/1不是中继vlan 4052-4092。由于配置跨越多行,并且在接口和集群语句之间可能存在不同的配置元素,所以我试图使用这样的方法:
GigabitEthernet1\/1\/1[\s\S]*?(vlan.*40[5-8][0-9]|9[12])如果GigabitEthernet1 1/1/1在允许的语句中有一个40 on的vlan,但是如果没有,则搜索将继续进行,直到在下一个接口上找到匹配为止。有什么方法可以让regex在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谢谢你的帮助。我应该提到,这个inst‘用于将应用程序转换成特定的编程语言,而是进入支持regex以查找配置文件应该或不应该包含的元素的管理系统。
发布于 2019-02-01 13:04:48
试试这个Regex:
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])* - 脾气暴躁的象征 -匹配不以interface GigabitEthernet开头的任何字符的0+出现。(vlan.*40(?:9[12]|[6-8][0-9]|5[2-9])) -匹配vlan和除新行字符以外的任何字符的0+,最后匹配在4052至4092之间所需的数字。https://stackoverflow.com/questions/54480008
复制相似问题