Java - regex pour correspondre à un nombre entier
Je vais avoir un problème d'avoir une expression régulière qui correspond à une Chaîne avec tout int.
Voici ce que j'ai:
if(quantityDesired.matches("\b\d+\b")){.......}
Mais Eclipse me donne:
Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )
J'ai regardé à travers d'autres questions similaires et j'ai essayé à l'aide d'une double barre oblique inverse mais qui ne fonctionne pas. Des Suggestions?
OriginalL'auteur varatis | 2011-10-03
Vous devez vous connecter pour publier un commentaire.
Vous ne besoin d'échapper les barres obliques inverses dans Java littéraux de chaîne:
Bien sûr, cela ne corresponde positif entiers, pas tout entier comme vous l'avez dit dans votre question. Était-ce votre intention?
Ensuite, vous devez également avoir une autre erreur. Je crois que le problème, c'est que vous souhaitez utiliser
Matcher.trouver
au lieu dematches
. L'ancien recherches pour le modèle de n'importe où dans la chaîne, tandis que ce dernier n'matches si le ensemble chaîne correspond au modèle. Voici un exemple d'utilisation deMatcher.find
:Note
Si vous ne voulez vraiment correspondre à l'ensemble de la chaîne, alors vous n'avez pas besoin de les ancres:
Et si vous ne voulez accepter les entiers qui s'inscrivent dans une Java int type, vous devez utiliser Entier.parseInt comme Seyfülislam mentionné, plutôt que l'analyse elle-même.
OriginalL'auteur Mark Byers
Au lieu d'une expression régulière, vous devriez regarder dans Apache Commons Lang StringUtils.isNumeric
OriginalL'auteur DwB
Pourquoi ne pas vous préférez Entier.parseInt() méthode? Il fait ce que vous voulez et c'est plus lisible.
OriginalL'auteur Seyfülislam Özdemir