Salut,
attention avec l'ancrage
au début tu demandes les positions 18 et 19
avec ancrage ça ne marche pas
Pourquoi?
Discutons ta regex /^.\{13\}FR/
En ce cas l'ancrage oblige le départ au début de chaîne, donc seulement FR après les premières caractères sera reconnu et pas le 14 ème (en supposant que tu voulais les 2 - vu ta question)
En revanche ce que Miss t'a donné est très correct.
Pourquoi?
Si nous n'utilisons pas l'ancrage alors . peux reconnaître le 1er caractère de la chaîne 13 fois et ensuite trouver le 14ème et le 15ème F et R
Si F se trouve dans la position 15 et 16 (ce que veut dire après 14 caractères) la regex de Miss fonctionne mais pas la tienne.
Rappelle toi que je t'ai dit que le moteur n'est pas intelligent mais persévèrent et exhaustif. Donc le moteur va chercher d'abord en commencent avec le 1er caractère (et il va trouver F en postion 14 et R en position 15) ensuite comme il est persévèrent il va recommencer la recherche à partir de la position 2 donc il va trouver d'abord 13 caractères et ensuite un F (qui en réalité dans la chaîne est à la position 15) et puis un R (qui est en réalité dans la position 16)
Voilà pour exemple (la reconnaissance était dans les lignes 1 et 3, j'ai rajouté un caractères pour avoir F dans les 2 position 17 et 18 - voir en gras)
lami20j@debian:~/trash$ cat plop.txt
01234567890123467FRfkdlshjjkdfhuidghku
0123456789 58LA fkdlshjjkdfhuidghku
0123456789aaaa 57ZFR fkdlshjjkdfhuidghku
012345678958IT fkdlshjjkdfhuidghku
012FR56789 58UK fkdlshjjkdfhuidghku
0123456789 58FR fkdlshjjkdfhuidghku
1. la solution de Miss (pas d'ancrage)
lami20j@debian:~/trash$ grep -nE '.{17}FR' plop.txt
1:01234567890123467FRfkdlshjjkdfhuidghku
3:0123456789aaaa 57ZFR fkdlshjjkdfhuidghku
2. ta solution (avec ancrage)
lami20j@debian:~/trash$ grep -nE '^.{17}FR' plop.txt
1:01234567890123467FRfkdlshjjkdfhuidghkudonc cette fois le moteur se contente de chercher seulement en commençant avec le début de la chaîne puisque tu l'obliges en utilisant ^ ( début de chaîne)
lami20j