2

我需要帮助找出 RegEx 语句来帮助我正确匹配交换机/路由器上的接口。

示例:正确的匹配可能是:

Fa1/0, Gig2/0/2, Fa3/0/33/333, G1/0/0:1, Gi0/0.900 etc.

我能得到的最接近的是:

[fget][a-z]*[0-9]+(?:[\/\.:][0-9]+)+

问题是它也匹配或不正确的Fa1/0部分,根本不应该匹配。Fa1/0/Fa1/0a

任何人都可以帮助我吗?

给定字符串: Start Fa1/0/1 Gig2/0 Fa1/0/ Ending
仅匹配: Fa1/0/1Gi2/0
限制:您不能使用:\s' '(我使用的解析器不允许)
修饰符:大小写设置为不敏感。

附加信息/编辑如下

这实际上适用于新 SecureCRT 7.3 终端应用程序中的 RegEx 解析器。

目标是实时为正确的语法着色,同时从不正确的语法中消除着色。

这就是为什么我们不能依赖 ^ 和 $ 标记的原因,因为你永远无法确定单词会出现在行的开头或结尾。

正确匹配的整个单词将遵循以下格式:接口类型+数字+子接口(可选)。

接口类型:可以是从“F”到 FastEthernet 的任何内容。其他前缀包括 'g' 到 Gigabit,'e' 到以太网,以及 't' 到 10。

数字:这将遵循然后(重复)的模式。示例:1/2 或 1/2/3 甚至 1/2/3/4/5/6/7/8/10/12 在技术上对这种情况有效。

子接口(可选):将遵循 or 的格式。即:.900 或 :123

因此,更多的字符串示例可能是: F1/0/1.900 Gig2/0 Te1/0/0/1:23 单词可以以任何顺序出现并混合许多其他单词。IE:“显示 Int F1/0/0”或“int Range fa1/0/1 - 24”

4

1 回答 1

0

This matches all the expressions you listed. Apart from a couple of minor changes, the main thing is to add a negative lookahead expression at the end.

[FG][a-z]*[0-9](?:[\/\.\:][0-9]+)*(?!\/)
于 2014-09-10T19:57:30.407 回答