Bonjour,
J'ai un problème avec un while et un if dans les expressions régulières.
Quand l'expression régulière est retrouvée dans un texte, je modifie le texte.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
Iterator it = liste.iteration();
while (it.hasNext()) {
	s = (String)it.next();
	Pattern regex = Pattern.compile("\\W"+s+"\\W");
	Matcher match = regex.matcher(contenu);
	while (match.find()){
		String matchFound = match.group();
		String matchFoundmodif = "(\\Q"+matchFound+"\\E)";
		contenu = contenu.replaceAll(matchFoundmodif , "<font style bgcolor=\"#33CCFF\"> #titre# "+matchFound+" ##titre## </font>");
	}
}
Si je mets (comme ici) while (match.find()), alors
si s=bonjour, et que dans le texte il y a 2 fois bonjour, alors ce sera écrit: #titre##titre#bonjour##titre####titre##
=>il y a autant de fois #titre# et ##titre## qui entourent le mot qu'il y a d'occurences de ce mot dans le texte entier. => pas OK
Si je mets boolean b = match.find() suivi de if (b==true), alors certains mots ne sont pas surlignés. => pas OK

Je suppose que tout ça a un rapport avec le while et le if. Mais je ne vois pas comment faire pour avoir tous les mots qu'il faut, surlignés et encadrés seulement une fois par #titre# et ##titre##.
Merci


[Modéré par Didier] : ajout de tag dans le titre - Les règles du forum Java