Problème avec les expressions régulières java
sabrinafr
-
.Enzo44. Messages postés 38 Date d'inscription Statut Membre Dernière intervention -
.Enzo44. Messages postés 38 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je travaille pour la première fois sur les expressions régulières avec java, je rencontre un problème qui me bloque
pour bien vous expliquer voici mon code source:
package Tests;
import java.io.*;
import java.util.regex.*;
public class Expregulieres {
private static Pattern pattern1, pattern2, pattern3, pattern4;
private static Matcher matcher1, matcher2, matcher3, matcher4;
static int nbr,nbr1, nbr2 = 0;
// TODO Auto-generated constructor stub
// creation d'une methode
public void Test1 () {
// pour reconnaitre les mots REQ00? (les ID exigences)
pattern1 = Pattern.compile("REQ_\\d\\d\\d(.*)");
// pour reconnaitre du texte avec les blancs et les ''
pattern2 = Pattern.compile("Requirement_text(.*)");
//pour reconnaitre les references dans un doc d'exigence
pattern3 = Pattern.compile("covered_Requirement(.*)");
//pour reconnaitre les references dans un doc d'exigence
pattern4 = Pattern.compile("Allocated(.*)");
String texte =
// pour toutes exigences
"REQ_001: la premiere exigence\n" +
"Requirement_text: c'est une description d'une exigence1\n" +
"Requirement_text: c'est une description d'une exigence!!!!!!!!!!!!!!!\n" +
"covered_Requirement: la premiere reference vers \n"+
"covered_Requirement: la 2eme reference vers \n"+
"REQ_002: la deuxieme exigence\n" +
"Requirement_text: Perle\n" +
"Pourquoi pas" +
"ceci est du texte!!!!"+
"covered_Requirement: la 3eme reference vers \n"+
"Allocated: ceci est un attribut number one \n"+
"Allocated: ceci est un attribut number two \n";
// création d'un moteur de recherche
matcher1 = pattern1.matcher(texte);
matcher3 = pattern3.matcher(texte);
matcher2 = pattern2.matcher(texte);
matcher4 = pattern4.matcher(texte);
//utiliser une boucle for pr lire tt le string texte
while (matcher1.find()) {
System.out.println( matcher1.group()) ;
while( matcher2.find())
System.out.println(matcher2.group());
while (matcher3.find())
System.out.println( matcher3.group()) ;
while (matcher4.matches())
System.out.println( matcher4.group()) ;
} //fin du while principal
} //fin de la methode
}// fin de la classe
voici le résultat de l'exécution :
REQ_001: la premiere exigence
Requirement_text: c'est une description d'une exigence1
Requirement_text: c'est une description d'une exigence!!!!!!!!!!!!!!!
Requirement_text: Perle
covered_Requirement: la premiere reference vers
covered_Requirement: la 2eme reference vers
covered_Requirement: la 3eme reference vers
REQ_002: la deuxieme exigence
hors que l'affichage que je souhaite avoir c'est :
REQ_001: la premiere exigence\n
Requirement_text: c'est une description d'une exigence1\
Requirement_text: c'est une description d'une exigence!!!!!!!!!!!!!!!\n
covered_Requirement: la premiere reference vers \n
covered_Requirement: la 2eme reference vers \n
REQ_002: la deuxieme exigence\n
Requirement_text: Perle\
covered_Requirement: la 3eme reference vers \n
Allocated: ceci est un attribut number one \n
Allocated: ceci est un attribut number two \n
Merci de m'aider le plus tôt possible c'est urgent !!!
Je vous remercie d'avance
je travaille pour la première fois sur les expressions régulières avec java, je rencontre un problème qui me bloque
pour bien vous expliquer voici mon code source:
package Tests;
import java.io.*;
import java.util.regex.*;
public class Expregulieres {
private static Pattern pattern1, pattern2, pattern3, pattern4;
private static Matcher matcher1, matcher2, matcher3, matcher4;
static int nbr,nbr1, nbr2 = 0;
// TODO Auto-generated constructor stub
// creation d'une methode
public void Test1 () {
// pour reconnaitre les mots REQ00? (les ID exigences)
pattern1 = Pattern.compile("REQ_\\d\\d\\d(.*)");
// pour reconnaitre du texte avec les blancs et les ''
pattern2 = Pattern.compile("Requirement_text(.*)");
//pour reconnaitre les references dans un doc d'exigence
pattern3 = Pattern.compile("covered_Requirement(.*)");
//pour reconnaitre les references dans un doc d'exigence
pattern4 = Pattern.compile("Allocated(.*)");
String texte =
// pour toutes exigences
"REQ_001: la premiere exigence\n" +
"Requirement_text: c'est une description d'une exigence1\n" +
"Requirement_text: c'est une description d'une exigence!!!!!!!!!!!!!!!\n" +
"covered_Requirement: la premiere reference vers \n"+
"covered_Requirement: la 2eme reference vers \n"+
"REQ_002: la deuxieme exigence\n" +
"Requirement_text: Perle\n" +
"Pourquoi pas" +
"ceci est du texte!!!!"+
"covered_Requirement: la 3eme reference vers \n"+
"Allocated: ceci est un attribut number one \n"+
"Allocated: ceci est un attribut number two \n";
// création d'un moteur de recherche
matcher1 = pattern1.matcher(texte);
matcher3 = pattern3.matcher(texte);
matcher2 = pattern2.matcher(texte);
matcher4 = pattern4.matcher(texte);
//utiliser une boucle for pr lire tt le string texte
while (matcher1.find()) {
System.out.println( matcher1.group()) ;
while( matcher2.find())
System.out.println(matcher2.group());
while (matcher3.find())
System.out.println( matcher3.group()) ;
while (matcher4.matches())
System.out.println( matcher4.group()) ;
} //fin du while principal
} //fin de la methode
}// fin de la classe
voici le résultat de l'exécution :
REQ_001: la premiere exigence
Requirement_text: c'est une description d'une exigence1
Requirement_text: c'est une description d'une exigence!!!!!!!!!!!!!!!
Requirement_text: Perle
covered_Requirement: la premiere reference vers
covered_Requirement: la 2eme reference vers
covered_Requirement: la 3eme reference vers
REQ_002: la deuxieme exigence
hors que l'affichage que je souhaite avoir c'est :
REQ_001: la premiere exigence\n
Requirement_text: c'est une description d'une exigence1\
Requirement_text: c'est une description d'une exigence!!!!!!!!!!!!!!!\n
covered_Requirement: la premiere reference vers \n
covered_Requirement: la 2eme reference vers \n
REQ_002: la deuxieme exigence\n
Requirement_text: Perle\
covered_Requirement: la 3eme reference vers \n
Allocated: ceci est un attribut number one \n
Allocated: ceci est un attribut number two \n
Merci de m'aider le plus tôt possible c'est urgent !!!
Je vous remercie d'avance
A voir également:
- Problème avec les expressions régulières java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
1 réponse
je sais que c'est un peu tard pour répondre mais je ne connais pas la regex en java(rapidement) mais ce que j'ai appris ressemble vraiment à la regex en javascript question rédaction de la regex(et oui, en javascript il n'y à pas d'initialisation avec pattern et le reste) alors ça donne:
/regex/ : les slash correspond à la délimitation de la regex
/regex|regexp/ : la pipe correspond à "ou la regex....."
/gr[ioèa]s/ : correspond aux mots: gris, gros, grès et gras mais un des quatre
/[a-z1-9]/ : correspond aux lettres de a à z(sans majuscule) et aux chiffre de 1 à 9
+ : le caractère précèdent doit apparaitre au moins une fois
? : le caractère précédent doit apparaitre une fois ou deux
* : le caractère précédent doit apparaitre 0,1 fois (facultatif) ou une fois
il en existe d'autre mais je ne m'en souvient plus...
/regex/ : les slash correspond à la délimitation de la regex
/regex|regexp/ : la pipe correspond à "ou la regex....."
/gr[ioèa]s/ : correspond aux mots: gris, gros, grès et gras mais un des quatre
/[a-z1-9]/ : correspond aux lettres de a à z(sans majuscule) et aux chiffre de 1 à 9
+ : le caractère précèdent doit apparaitre au moins une fois
? : le caractère précédent doit apparaitre une fois ou deux
* : le caractère précédent doit apparaitre 0,1 fois (facultatif) ou une fois
il en existe d'autre mais je ne m'en souvient plus...