You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

正则如何实现可选OR匹配,将匹配到的接口信息归入group1组

解决方案

你原有正则的问题是|的优先级作用于整个正则的顶级结构,导致switchport mode access、switchport voice vlan.*两个分支完全脱离了前面的interface匹配逻辑,会单独匹配到配置行,无法关联捕获接口名。

正则写法(JS 语法,需开启g全局匹配、m多行匹配标志)

如果你的需求是将配置中包含以下任意一项的接口名捕获到group1:

  • switchport access vlan <数字>
  • switchport mode access
  • switchport voice vlan <任意内容>
    使用以下正则即可:
/(interface [A-Za-z]+\d\/\S+)\n(?:.|\n)*?(?:switchport access vlan\s(\d+)|switchport mode access|switchport voice vlan.*)(?=\n!)/gm

如果你的需求是精确捕获你列出的三个固定接口名到group1,可以直接指定接口编号匹配:

/(interface GigabitEthernet(?:3\/11|2\/[23]))/gm

匹配逻辑说明

  1. 第一个捕获组(interface [A-Za-z]+\d\/\S+)匹配接口名称,存入group1
  2. 非捕获组(?:.|\n)*?非贪婪匹配接口名之后到目标配置项之前的所有内容
  3. 第二个非捕获组(?:switchport access vlan\s(\d+)|switchport mode access|switchport voice vlan.*)是你需要的三个可选匹配逻辑,通过括号包裹保证OR逻辑只作用于这三个规则
  4. 正向预查(?=\n!)保证匹配范围限制在当前接口配置块内,不会跨接口匹配

内容的提问来源于stack exchange,提问作者netauto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 10:27:02