2014-09-06 4 views
2

J'ai besoin d'aide pour trouver une instruction RegEx qui m'aidera à faire correspondre correctement les interfaces sur un commutateur/routeur.Correspond uniquement au mot entier qui contient des caractères spéciaux

Exemple: Corriger les matchs peuvent être:

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

Le plus proche que je suis en mesure d'obtenir est:

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

Le problème est que est aussi la partie correspond Fa1/0 de Fa1/0/ ou Fa1/0a ce qui est incorrect et ne devrait pas être apparié du tout.

Quelqu'un peut-il m'aider?

Compte tenu de la chaîne: Start Fa1/0/1 Gig2/0 Fa1/0/ Ending
match SEULEMENT: Fa1/0/1 et Gi2/0
Restriction: Vous ne pouvez pas utiliser: \s ou ' ' (l'analyseur J'utilise ne permet pas)
Modificateur: cas est réglé sur insensible .

RENSEIGNEMENTS SUPPLÉMENTAIRES/Modifier

Ceci est en fait un analyseur de RegEx qui se trouve dans la nouvelle application Terminal SecureCRT 7.3.

Le but est de coloriser la syntaxe correcte en temps réel, tout en supprimant la colorisation d'une syntaxe incorrecte. C'est pourquoi nous ne pouvons pas dépendre des jetons^et $, car vous ne pouvez jamais être sûr que le mot sera au début ou à la fin de la ligne.

Les mots entiers correctement appariés suivront le format suivant: Type d'interface + numéro + sous-interface (facultatif). Type d'interface: Peut être n'importe quoi de «F» à FastEthernet. Les autres préfixes incluent «g» pour Gigabit, «e» pour Ethernet et «t» pour dix.

Numéro: Ceci suivra le modèle de, puis (répétition). Exemple: 1/2 ou 1/2/3 ou même 1/2/3/4/5/6/7/8/10/12 serait techniquement valable pour ce cas.

Sous-interface (facultatif): Suivreait le format de ou. IE: .900 ou: 123

Ainsi, plusieurs exemples de chaîne pourraient être: F1/0/1.900 Gig2/0 Te1/0/0/1: 23 Les mots peuvent apparaître dans n'importe quel ordre et mélangé de nombreux autres mots. IE: "Afficher Int F1/0/0" ou "int Plage fa1/0/1 - 24"

+1

Quel est le langage/outil que vous utilisez? Donnez plus d'exemples de chaînes d'entrée. –

+0

Vous pouvez décrire le prochain caractère possible et mettre ce qui vous intéresse dans un groupe de capture: '(\ b [efgt] [az] * [0-9] + (?: [/ .:] [0-9] +) +) (?: | $) ' –

+0

Malheureusement, le code ci-dessus ne fonctionnera pas car non seulement \ s n'est pas autorisé '' (un espace) n'est pas autorisé non plus. – James

Répondre

0

Ceci correspond à toutes les expressions que vous avez listées. En dehors de quelques changements mineurs, l'essentiel est d'ajouter une expression négative à la fin.

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