Donc, d'une manière ou d'une autre (à jouer), je me suis retrouvé avec une regex comme \d{1}{2}
.
Logiquement, pour moi, il devrait dire:
(Un chiffre exactement une fois) exactement deux fois, c'est à dire un chiffre exactement deux fois.
Mais en effet, il semble juste de dire, "un chiffre exactement une fois" (ignorant ainsi l' {2}
).
String regex = "^\\d{1}{2}$"; // ^$ to make those not familiar with 'matches' happy
System.out.println("1".matches(regex)); // true
System.out.println("12".matches(regex)); // false
Des résultats similaires peuvent être visibles à l'aide d' {n}{m,n}
ou similaire.
Pourquoi est-ce arrivé? Il est explicitement indiqué dans la regex / documentation de Java quelque part ou est-ce juste un de décision des développeurs Java fait à la volée ou est-ce peut-être un bug?
Ou est-il en fait pas ignoré et il signifie en fait quelque chose de complètement différent?
Non pas que cela importe beaucoup, mais ce n'est pas la regex comportement, Rubular fait ce que j'attends.
Remarque - le titre est principalement pour la facilité de recherche pour les utilisateurs qui veulent savoir comment ça marche (pourquoi pas).