IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

RegEx et parcourt de concordances


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Étudiant
    Inscrit en
    Juin 2004
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2004
    Messages : 72
    Par défaut RegEx et parcourt de concordances
    Bonjour,

    Voila, j'ai un petit problème avec le package regex.

    J'ai une méthodes qui doit retourner un Vector contenant une liste de méthodes. Vous me direz sa se mort un peu la queu. C'est le but.

    La méthodes inspecte un fichier .java pour en faire ressortir
    - le nom de la class qui'il comporte
    - la liste des méthodes que la classe possèdent (type nom)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    /*
     * String this.contentFile : est le contenu du fichier
     * strPattern : le model d'expression régulière
     * group : le numero du group où se trouve l'information souhaité
     */
    public Vector regContentFile(String strPattern, int group) {
    	String strResult = "";
    	Vector vecResult = new Vector();
    	Pattern p;
    	Matcher m;
     
    	p = Pattern.compile(strPattern);
    	m = p.matcher(this.contentFile);
     
    	while (m.find()) {
    		strResult = m.group(group);
    		vecResult.addElement(strResult);
    	}
     
    	return vecResult;
    }
    Voici les expresisons régulières (elles marches sur un soft java permettant de les tester)
    - (class\\s)(.*?)\\s : le groupe 2 me renvoi le nom de la classe
    - (private|public|protected)\\s(([^class].*)\\() : le groupe 3 me renvoi le type (si besoin) et le nom de la méthode

    Seulement voila, pour la première expression régulière ça marche, j'ai bien en sortie un élément correspondant au nom de la classe dans le Vector. Mais pour la deuxième expression, je n'est qu'un élément dans le Vector, et la valeur n'est pas du tout celle désirée.

    En gros l'algo que je souhaitais mettre en place serait de se style :
    - matché l'expression
    - pour chaque correspondance
    - extraire le group souhaité
    - retourné la liste des groupes souhaités

    Merci d'avance.

  2. #2
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Ceci signifie : tout sauf les lettres 'c', 'l', 'a', 's' et non pas tout sauf cette suite de lettre.
    Donc si le nom de la méthode contient une de ces lettres ça ne matchera pas.

Discussions similaires

  1. [Regex] Plusieurs motifs
    Par sissi_l dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 29/06/2004, 15h15
  2. [jakarta][regex]Matcher mot en entier.
    Par thibaut dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 26/05/2004, 14h33
  3. [Regex] Vérifier qu'une chaîne respecte une expression régulière
    Par PeteMitchell dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 13/05/2004, 15h22
  4. [regex][string] replaceAll bogué ?
    Par 7eme dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 13/11/2003, 17h36
  5. Cherche regex...
    Par laurent_h dans le forum C
    Réponses: 4
    Dernier message: 31/03/2003, 12h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo