2014-09-06 194 views
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/0aFa1/0部分也匹配这是不正确的,不应该匹配。

任何人都可以帮助我吗?

给出字符串:Start Fa1/0/1 Gig2/0 Fa1/0/ Ending
仅匹配:Fa1/0/1Gi2/0
限制:不能使用:\s' '(我使用的解析器不允许它)
修改:案例被设置为不敏感。

附加信息/编辑下面

这实际上是一个正则表达式语法分析程序是在新的SecureCRT 7.3终端应用程序。

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

这就是为什么我们不能依赖于^和$标记,因为你永远不能确定这个词将在行的开始或结束。

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

接口类型:可能是从'F'到FastEthernet的任何东西。其他的前缀包括千兆的'g',以太网的'e'和'十'的't'。

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

子接口(可选):将采用或的格式。 IE:.900或:123

因此,更多的字符串示例可以是:F1/0/1.900 Gig2/0 Te1/0/0/1:23这些词可以以任意顺序出现并混合很多其他词。 IE:“Show Int F1/0/0”或“int range fa1/0/1 - 24”

+1

什么是您使用的语言/工具?提供更多输入字符串示例。 – 2014-09-06 01:41:54

+0

你可以描述下一个可能的字符,并将你感兴趣的内容放在捕获组中:'(\ b [efgt] [az] * [0-9] +(?:[/ .:] [0-9] +)+)(?: | $)' – 2014-09-06 02:28:23

+0

不幸的是,上面的代码不会工作,因为不仅不允许''(空格)也不允许。 – James 2014-09-06 02:37:21

回答

0

这与您列出的所有表达式匹配。除了一些小的变化之外,最主要的是在最后添加一个负面的超前表达式。

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