/ / Comment puis-je indexer un mot spécifique dans une chaîne en Java? - java, regex

Comment puis-je indexer un mot spécifique dans une chaîne en Java? - Java, regex

Je voudrais remplacer toutes les occurrences d'un mot spécifique dans une chaîne Java. Par exemple, je voudrais remplacer tous cat dans la chaîne suivante par cat. J'ai essayé d'implémenter regex en définissant pattern comme \bcat\b, mais cela ne semble pas fonctionner dans le cas où des caractères non alphanumériques tels que le soulignement sont autour.

cat catabolic_cat_4cat,6cat

Comment puis-je créer une expression rationnelle pour exclure tous les caractères non alphanumériques autour du mot et produire un aiguillon comme celui-ci: c*t catabolic_c*t_4cat,6cat

Réponses:

1 pour la réponse № 1

Vous pouvez simplement alterner la limite de motclasse de personnage avec une classe de votre propre fabrication comme telle, et (selon la suggestion d'Andreas), utilisez des comparaisons pour éviter d'attraper les caractères environnants dans le remplacement.

(?<=^|[^a-zA-Z0-9])cat(?=[^a-zA-Z0-9]|$)

-1 pour la réponse № 2

Que diriez-vous de rendre votre code plus propre en utilisant cette fonction String intégrée:

 String.replaceAll("oldText","newText");