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.
Si je mets (comme ici) while (match.find()), alors
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 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
Partager