[Regex] Expressions régulières: sous groupe
bonjour,
j'ai le code suivant: (s est une variable string, contenu est une string)
Code:
1 2 3 4 5 6 7 8
| Pattern regex = Pattern.compile("(\\W("+s+")\\W)");
Matcher match = regex.matcher(contenu);
boolean b = match.find();
if (b == true) {
String matchFound = match.group();
String matchColored ="<font size=\"4\" style bgcolor=\"#33CCFF\">"+matchFound+"</font>";
contenu = contenu.replaceAll(matchFound, matchColored);
} |
ça fonctionne très bien sauf si j'ai une variable s par exemple slt et que dans mon texte, j'ai slt(bonjour). J'obtiens
Code:
1 2 3
| Autre erreur :
java.util.regex.PatternSyntaxException: Unclosed group near index 5
slt( |
donc j'ai voulu faire:
Code:
1 2 3 4 5 6 7 8
| Pattern regex = Pattern.compile("(\\W("+s+")\\W)");
Matcher match = regex.matcher(contenu);
boolean b = match.find();
if (b == true) {
String matchFound = match.group(2);
String matchColored ="<font size=\"4\" style bgcolor=\"#33CCFF\">"+matchFound+"</font>";
contenu = contenu.replaceAll(matchFound, matchColored);
} |
et ça marche sauf que maintenant, si j'ai une variable ct et que dans mon texte, j'ai action par exemple, alors ça va me repérer le mot action car il contient ct. or moi, je ne veux que ct. C'est pour ça que j'avais mis les \\W. Donc comment faire
- pour ne surligner que le mot exact et pas un mot qui en inclus un autre
- ne pas tenir compte des caractères non mot d'avant et d'après ?
Merci