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)
Voici les expresisons régulières (elles marches sur un soft java permettant de les tester)
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; }
- (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.
Partager