首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >限制正则表达式模式匹配范围

限制正则表达式模式匹配范围
EN

Stack Overflow用户
提问于 2019-02-01 12:55:27
回答 1查看 119关注 0票数 2

寻找一些帮助的正则表达式。我的技能很初级,我一直找不到答案。

我使用regex通过一个配置文件,并希望确认接口GigabitEthernet1 1/1/1不是中继vlan 4052-4092。由于配置跨越多行,并且在接口和集群语句之间可能存在不同的配置元素,所以我试图使用这样的方法:

代码语言:javascript
复制
GigabitEthernet1\/1\/1[\s\S]*?(vlan.*40[5-8][0-9]|9[12])

如果GigabitEthernet1 1/1/1在允许的语句中有一个40 on的vlan,但是如果没有,则搜索将继续进行,直到在下一个接口上找到匹配为止。有什么方法可以让regex在1/1/1接口配置结束后停止查看吗?

代码语言:javascript
复制
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以查找配置文件应该或不应该包含的元素的管理系统。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-01 13:04:48

试试这个Regex:

代码语言:javascript
复制
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之间所需的数字。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54480008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档