Comment puis-je créer une expression régulière qui détecte les nombres hexadécimaux dans un texte ?
Par exemple, '0x0f4', '0acdadecf822eeff32aca5830e438cb54aa722e3', et '8BADF00D'.
Comment puis-je créer une expression régulière qui détecte les nombres hexadécimaux dans un texte ?
Par exemple, '0x0f4', '0acdadecf822eeff32aca5830e438cb54aa722e3', et '8BADF00D'.
@NiklasB. Votre raccourci n'est valable que si vous utilisez des regex perl, si vous utilisez des regex POSIX, alors la solution de Steven est la plus courte. De toute façon, la solution de Steven fonctionne pour les regex perl et POSIX.
Compris! La solution de Steven est bonne si le nombre hexadécimal commence par 0x ou 0X. Celui-ci devrait mieux fonctionner: ^[0-9A-F]+$ Il peut également reconnaître les motifs hexadécimaux comme: '535GH0G73' Pour Java, nous pouvons utiliser par exemple String.matches() pour vérifier cela.. Merci les gars pour la réponse :)
La syntaxe exacte dépend de vos besoins exacts et du langage de programmation, mais en gros:
/[0-9a-fA-F]+/
ou plus simplement, i
rend la correspondance insensible à la casse.
/[0-9a-f]+/i
Si vous avez la chance d'utiliser Ruby, vous pouvez faire:
/\h+/
ÉDIT - La réponse de Steven Schroeder m'a fait réaliser que je n'avais pas bien compris la partie en 0x, j'ai donc mis à jour mes suggestions en conséquence. Si vous voulez également correspondre à 0x, les équivalents sont
/0[xX][0-9a-fA-F]+/
/0x[0-9a-f]+/i
/0x[\h]+/i
AJOUTÉ PLUS - Si 0x doit être facultatif (comme le laisse entendre la question):
/(0x)?[0-9a-f]+/i
Pas grand-chose, mais la plupart des moteurs regex prennent en charge les classes de caractères POSIX, et il y a [:xdigit:]
pour faire correspondre les caractères hexadécimaux, ce qui est plus simple que le commun 0-9a-fA-F
.
Donc, le regex demandé (c'est-à-dire avec 0x
en option) est : /(0x)?[[:xdigit:]]+/
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
2 votes
Regex ne parse pas vraiment. Essayez d'extraire tout ce qui ressemble à un nombre et de filtrer ceux qui ne sont pas des hexadécimaux.