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

如何用正则表达式提取接口类型与编号并排除Trunk、LoopBack接口

解决接口提取并排除指定类型的正则方案

要提取符合要求的接口信息,核心是通过负向预查排除Trunk和LoopBack类型,同时适配两种接口格式(带空格如Ethernet 2/0/0、无空格如vlan12)。

最终正则表达式

^interface (?!Trunk|LoopBack)([a-zA-Z0-9\-\/]+(?:\s[0-9\-\/]+)?)

正则拆解

  • ^interface :匹配行首的interface关键字及后续空格,确保只处理接口定义行
  • (?!Trunk|LoopBack):负向预断言,确保后续内容不以Trunk或LoopBack开头,直接排除这两类接口
  • ([a-zA-Z0-9\-\/]+(?:\s[0-9\-\/]+)?):捕获目标接口信息:
    • [a-zA-Z0-9\-\/]+:匹配接口类型(如Ethernet、vlan)
    • (?:\s[0-9\-\/]+)?:可选匹配空格加编号部分(如2/0/0),非捕获组避免额外分组,?适配无空格的格式(如vlan12)

测试验证

针对你提供的命令示例:

interface Ethernet 2/0/0 xxxx
interface vlan12 xxxx
interface Trunk10 xxxx
interface LoopBack 1/0/0 xxxx

正则会成功捕获:

  • Ethernet 2/0/0
  • vlan12

自动排除Trunk10和LoopBack 1/0/0。

使用示例(Python)

import re

commands = [
    "interface Ethernet 2/0/0 xxxx",
    "interface vlan12 xxxx",
    "interface Trunk10 xxxx",
    "interface LoopBack 1/0/0 xxxx"
]

pattern = re.compile(r'^interface (?!Trunk|LoopBack)([a-zA-Z0-9\-\/]+(?:\s[0-9\-\/]+)?)')
for cmd in commands:
    match = pattern.search(cmd)
    if match:
        print(match.group(1))

输出结果:

Ethernet 2/0/0
vlan12

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 01:42:08