Мне нужна помощь в определении инструкции 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
Match ONLY: Fa1/0/1
и Gi2/0
Ограничение: Вы не можете использовать: \s
или ' '
(синтаксический анализатор, я использую не позволяет)
Модификатор: Корпус установлен нечувствительным ,
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ/EDIT НИЖЕ
Это на самом деле для RegEx синтаксического анализатора, который находится в новом терминале приложения SecureCRT 7.3.
Цель состоит в том, чтобы раскрасить правильный синтаксис в реальном времени, удалив цвет из неправильного синтаксиса.
Вот почему мы не можем зависеть от токенов^и $, потому что вы никогда не можете быть уверены, что слово будет в начале или в конце строки.
Правильно подобранные целые слова будут соответствовать формату: Interface-Type + Number + Sub-interface (необязательно).
Интерфейс Тип: Может быть что угодно от «F» до FastEthernet. Другие префиксы включают «g» в Gigabit, «e» для Ethernet и «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»
Какой язык/инструмент вы используете? Приведите больше примеров строк ввода. –
Вы можете описать следующий возможный символ и поместить то, что вас интересует в группе захвата: '(\ b [efgt] [az] * [0-9] + (?: [/.] [0-9] +) +) (?: | $) ' –
К сожалению, приведенный выше код не будет работать, так как не разрешено использовать \ s не разрешено '' (пробел). – James