Bonjour,

Je cherche à récupérer des références de normes dans un texte afin de les encadrer de balise HTML <a>, je tente de le faire avec une regex.

Les normes sont de la forme "NF EN xxx", où xxx est le numéro de la norme.

Voici mon code soumis à un exemple:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
String txt = "blablabla NF EN 127 blablabla NF EN 148 blablabla";
Pattern patternNormes = Pattern.compile(".*((NF EN \\d*)).*");
Matcher matcherNormes = patternNormes.matcher(txt);
 
if(matcherNormes.find()){
    matcherNormes.matches();
    for(int i=1;i<matcherNormes.groupCount();i++){
        System.out.println(matcherNormes.group(i));
        txt = txt.replaceAll(matcherNormes.group(i),"<a>"+matcherNormes.group(i)+"</a>");
    }
    System.out.println(txt);
}
A priori la regex que j'utilise n'est pas suffisante puisqu'elle s'arrête à la première occurrence (en partant de la fin) correspondante à mon motif. Car au final seule la seconde norme de l'exemple se retrouve encadrée par les balises HTML <a> (sortie de console) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
NF EN 148 
blablabla NF EN 127 blablabla <a>NF EN 148</a> blablabla
Y aurait-il un pro des regex qui pourrait me filer un tuyaux pour récupérer les autres occurrences (NF EN 127 dans mon exemple) ?

Par avance, merci pour votre aide