Bonjour,

j'ai un problème avec les expressions régulières en Java... Normalement, j'ai l'habitude de les utiliser ailleurs mais là, je bloque complètement! J'ai regardé le tutorial de cyberzoide, je pense l'avoir compris mais je n'y arrive pas!

Alors voici le texte que j'étudie:
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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
 
Un exemple illustrera chaque définition.
 
 
 
<--1 Debut de la table des charges de travail par mois-->
420
415
355
345
160
95
380
395
270
230
310
420
<--Fin de la table des charges de travail par mois-->
 
Exemple:
420
415
355
345
160
95
380
395
270
230
310
420
 
Chaque ligne correspond à un mois, Janvier pour la première, Décembre pour la dernière.
 
 
 
<--2 Debut de la table des temps de travail estime par mois et par type d'elevage-->
1.4	1.8	1.5	1.4	1.4
9.8	2.4	1.4	1.4	1.4
4.0 0.4 1.4 1.4 1.4
2.8 0.6 1.3 1.4 1.5
2.2 0.4 1.3 1.5 1.2
2.2 0.4 1.3 1.3 1.2
2.2 0.6 1.3 1.3 1.2
2.6 5.8 1.5 1.5 1.2
0.6 4.0 1.3 0		0
0.6 1.2 1.3 1.3 2.6
0.6 1.8 1.2 1.2 1.2
0.6 1.8 1.5 1.4 1.4
<--Fin de la table des temps de travail estime par mois et par type d'elevage-->
 
Exemple:
1.4	1.8	1.5	1.4	1.4
9.8	2.4	1.4	1.4	1.4
4.0 0.4 1.4 1.4 1.4
2.8 0.6 1.3 1.4 1.5
2.2 0.4 1.3 1.5 1.2
2.2 0.4 1.3 1.3 1.2
2.2 0.6 1.3 1.3 1.2
2.6 5.8 1.5 1.5 1.2
0.6 4.0 1.3 0		0
0.6 1.2 1.3 1.3 2.6
0.6 1.8 1.2 1.2 1.2
0.6 1.8 1.5 1.4 1.4
 
Chaque ligne correspond à un mois et chaque colonne à un type d'élevage.
Dans ce texte, je veux d'abord extraire ce qu'il y a entre les balises, leur ordre n'est pas forcément là. Pour cela, j'utilise les expressions suivantes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
private Pattern patternChargeTravail = Pattern.compile("<--1.Debut.*?-->(.+?)<--Fin",Pattern.MULTILINE);
private Pattern patternTempsEstime = Pattern.compile("<--2.Debut.*?-->(.+?)<--Fin",Pattern.MULTILINE);
Et ensuite, avec les données capturées par le "(.+?)", je veux capturer chaque valeur numérique. Comme ces valeurs ont un format prédéfini, j'utilise les expressions suivantes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
private Pattern patternChargeTravailV = Pattern.compile("(^\\s*(\\d+)\\s*$){12}",Pattern.MULTILINE);
private Pattern patternTempsEstimeV = Pattern.compile("(^(\\s*(\\d+)\\s*){5}$){12}",Pattern.MULTILINE);
Le problème, c'est qu'avec mon code, je n'arrive pas à matcher mes balises
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
 
	public void buildChargeTravail()
	{
		matcherBalise = patternChargeTravail.matcher(texteBrut.toString());
		if (!matcherBalise.find(0)){
			System.err.println("Donnees sur la charge de travail non trouvees!");
			System.exit(2);
		}
		System.out.println(matcherBalise.group());
		matcherValeurs = patternChargeTravailV.matcher(matcherBalise.group());
		if (!matcherValeurs.find(0)){
			System.err.println("Donnees sur la charge de travail mal écrites!");
			System.exit(3);
		}
		tableChargeTravail = new float[12];
		System.out.println("CdT: "+matcherValeurs.group());
	}
Je ne sais pas pourquoi je n'arrive pas à matcher ce que je veux... et c'est pour ça que je demande votre aide.

Merci d'avance, c'est assez urgent (enfin, j'ai encore une semaine mais je veux de la marge pour finaliser le reste, c'est la partie la plus simple de mon projet).