[REGEX] Séparée d'espaces ou rien

surfatao Messages postés 172 Statut Membre -  
[Dal] Messages postés 6373 Statut Contributeur -
Bonjour,

Je dois rechercher des nombres hexadécimaux séparés par des espaces ou rien (début ou fin de ligne)

Par exemple:
4444
Aaa4
Un nombre hexadecimal : AE456
sdqsdq4Eezz
bisous 


Je sais qu'un hexadécimal c'est [0-9a-fA-F]+ mais après je n'arrive pas à trouver ce qu'il manque. Pouvez-vous m'aider?

Merci d'avance :)

3 réponses

KX Messages postés 19031 Statut Modérateur 3 020
 
Le début de ligne c'est ^ et la fin de ligne $
Il te manque donc plus qu'à mettre l'espace et ça doit être bon :

^[ 0-9A-Fa-f]+$
0
surfatao Messages postés 172 Statut Membre 15
 
Oui mais justement, je les mets où les espaces?
Parce que du coup avec ta solution, cette ligne n'est pas bonne.
Un nombre hexadecimal : AE456

Je veux cette syntaxe:

((début de ligne) ou (espace)) >> mon héxa >> ((espace) ou (fin de ligne))
0
KX Messages postés 19031 Statut Modérateur 3 020
 
Si j'ai bien compris ce que tu voulais seules les lignes composées de chiffres hexadécimaux ou d'espaces sont acceptés. Donc ta ligne qui commence par "Un nombre hexadecimal : " n'est pas valide, en revanche si tu considères "AE456" tout seul c'est tout à fait valide.

Un nombre hexadecimal : AE456 // non valide
AE456 // valide
A E4 56 // valide
0
surfatao Messages postés 172 Statut Membre 15
 
Si, il est valide puisque il est entouré d'un espace et d'une fin de ligne.
0
surfatao Messages postés 172 Statut Membre 15
 
le nombre .2BD4f. n'est pas bon puisqu'il est entouré par des points.
0
KX Messages postés 19031 Statut Modérateur 3 020
 
Je ne suis pas super doué en Regex, je pensais à un truc comme ça :

[ ^]([0-9A-Fa-f]+)[ $]
Mais de toute évidence ça ne fonctionne pas, alors j'ai du l'éclater :

^([0-9A-Fa-f]+)$|^([0-9A-Fa-f]+) | ([0-9A-Fa-f]+) | ([0-9A-Fa-f]+)$
0
[Dal] Messages postés 6373 Statut Contributeur 1 106
 
Salut surfatao,


Si tu utilises des regexp compatibles Perl, tu dois utiliser les références arrières et avant pour faire cela :

(?<=\s)([a-fA-F0-9]+)(?=\s)

Dal
0