2014-09-06 195 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]+)*(?!\/)