Bonjour,
Je débute en regex et j'ai du mal à en définir une simple (à priori) en Java.
J'utilise un replaceAll(monNewMotif) pour mettre des mots en majuscules dans une chaine.
Je crée donc un Pattern monMotif et un Matcher maChaine ; monMotif étant une regex. Ce qui donne ceci :
Le premier mot "allumette" est bien remplacé mais pas le second qui est au pluriel.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 import java.util.regex.*; String monMotif = "allumette"; String maChaine = "une allumette de la boite d'allumettes"; String monNewMotif = monMotif.toUpperCase(); Pattern pattern = Pattern.compile(monMotif); Matcher matcher = pattern.matcher(maChaine); String s = matcher.replaceAll(monNewMotif); System.out.println(s); // Affiche "une ALLUMETTE de la boite d'allumettes"
La chaine pourrait aussi être "Allumette en peuplier", c'est-à-dire avec le mot du motif qui pourrait commencer par une majuscule.
J'ai fait le choix de mettre les motifs en minuscules mais les chaines de caractères me sont imposées.
Je dois donc définir une regex à envoyer dans le Pattern qui puisse gérer :
Première lettre des mots de la chaine pouvant être en majuscule ou en minuscule.
Dernière lettre des mots de la chaine pouvant être au pluriel : s|S|x|X
J'ai essayé ceci avec un pluriel en fin de chaine :
"^([a-zA-Zéèêïà]{1})([\\w]+)([sSxX]{1})$"
Mais cela ne fonctionne pas
Je suis sûr qu'il y en a qui font ça les mains dans le dos
Y aurait-il une bonne âme parmi vous qui pourrait m'aider![]()
Partager