Expressions régulières en JAVA
Principe de codage
Il est possible d'utiliser le principe des expressions régulières en JAVA.
Pour cela, vous aurez besoins de deux librairies:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
Eventuellement une troisième pour contrôler la syntaxe de l'expression: import java.util.regex.PatternSyntaxException;
Une première méthode sera nécessaire:
Pattern.compile(expression)
ou Pattern.compile(expression, flag)
Par exemple
Pattern pattern = Pattern.compile(expression,Pattern.CASE_INSENSITIVE);
où le flag CASE_INSENSITIVE indique qu'il ne faudra pas faire de différence entre une lettre en majuscule, et une lettre en minuscule.
La seconde méthode va permettre de passer la chaîne de caractères qui doit être contrôlée
Vous utiliserez la méthode pattern.matcher (String);
Par exemple:
Matcher matcher = pattern.matcher("Ma chaîne à moi");
Il reste ensuite à traiter le résultat:
matcher.find() vapermettre d'itérer sur les n résultats. matcher.find() retournant false lorsqu'il n'y a plus de résultat.
matcher.group() permet de récuperer un des résultats. matcher.find () permettant de passer à l'élément suivant...
matcher.start() indique la position de départ dans le texte du résultat trouvé. La position démarrant à 0
matcher.end() indique la position dans le texte après le résultat trouvé.
Par exemple, pour le texte "Ceci est mon texte", si l'expression à chercher est "mon", start donnera la valeur 9 (soit le 10 ième caractère qui donne l'indice 9 car les indices démarrent à 0). end donnera 12 soit l'espace après le mot "mon".
Exemple de code
Au final, le code n'est pas bien difficile. C'est plutôt l'expression à utiliser pour l'analyse qui sera le plus difficile à saisir !
Autes solutions
Il n'est pas nécessaire d'utiliser systèmatiquement les expressions régulières pour effectuer vos analyses de textes. Cette classe étant généraliste, elle sera aussi un peu plus gourmande en temps d'exécution.
D'autes solutions existent comme les tokens, les méthodes de la classe String, ...
Autres liens
CF. doc Oracle pour plus de détails. C'est encore là que c'est le mieux expliqué.