2010-11-16 4 views
0

Je cherche un motif pour correspondre à cette "[email protected]@Po6" et une autre expression "[email protected]@Port-channel7" en Java en utilisant l'expression régulière.correspondance de formes en java en utilisant l'expression régulière

Comme nous avons \ d {1,3}. \ D {1,3}. \ D {1,3}. \ D {1,3} pour la validation d'adresse IP.

Pouvons-nous avoir le modèle ci-dessous? S'il vous plaît suggérer--

[a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9]@\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}@Po\d[1-9] 
[a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9]@\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}@Port-channel\d[1-9] 

Merci d'avance.

==============================

Dans mon programme j'ai,

import java.util.regex.*; 
class ptternmatch { 
    public static void main(String [] args) { 
     Pattern p = Pattern.compile("\\w\\w\\[email protected]\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}@*"); 
     Matcher m = p.matcher("[email protected]@Port-channel7"); 
     boolean b = false; 
     System.out.println("Pattern is " + m.pattern()); 
     while(b = m.find()) { 
      System.out.println(m.start() + " " + m.group()); 
    } 
    } 
} 

Mais je reçois une erreur de compilation avec le modèle .--> séquence d'échappement invalide La séquence sera comme un -> un mot de 3 caractères de chiffre n lettre @ ipaddress @ du texte ..

+0

Quelle est la question réelle? Quelles parties des exemples avez-vous de la difficulté à faire correspondre? Quelles parties sont variables et quelles parties sont statiques dans vos données attendues? – Ophidian

Répondre

0

Vous pouvez faire quelque chose comme matcher.find() et, si cela est vrai, les groupes pour capturer l'information. Jetez un oeil un tutoriel ici:

Vous auriez besoin d'envelopper les pièces nécessaires int parenthèses - par exemple (\d{1,3}). Si vous en enveloppez tous les 4, vous aurez accès à 4 groupes.

Aussi, jetez un oeil à ce tutoriel

Il est un très bon tutoriel, je pense que celui-ci expliquerait la plupart de vos questions.

Pour correspondre à la seconde de vos cordes:

  • LA5 @ 10.232.140.133 @ Port-channel7

vous pouvez utiliser quelque chose comme:

\w{2}\[email protected]\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}@[a-zA-Z\-]+\d 

Cela dépend de vous voulez faire, donc l'expression rationnelle pourrait changer.

+0

Je pense qu'il cherche le modèle Java regExp exact pour trouver ces exemples de chaînes. –

+0

@Andreas_D Je l'ai mal compris la première fois ... Merci! –

1

Eh bien, si vous voulez valider l'adresse IP, alors vous avez besoin de quelque chose d'un peu plus impliqué que \d{1,3}. De plus, gardez à l'esprit que pour les littéraux de chaîne Java, vous devez quitter le \ avec \\ afin de vous retrouver avec une seule barre oblique inverse dans la regex réelle pour échapper un caractère tel qu'un point (.).

Si l'on suppose le [email protected] bit est statique et que vous êtes bien avec soit Po ou Port-channel suivi d'un chiffre à la fin, alors vous avez probablement une expression régulière le long de ces lignes:

[email protected](((2((5[0-5])|([0-4][0-9])))|(1[0-9]{2})|([1-9][0-9]?)\\.){3}(2(5[0-5]|[0-4][0-9]))|(1[0-9]{2})|([1-9][0-9]?)@Po(rt-channel)?[1-9] 

(bracketing peut être foutu, mes excuses)

Questions connexes