288 votes

Recherche d'UUID dans le texte avec regex

Je recherche des UUID dans des blocs de texte à l'aide d'une expression rationnelle. Actuellement, je m'appuie sur l'hypothèse que tous les UUID suivront un modèle de 8-4-4-4-12 chiffres hexadécimaux.

Quelqu'un peut-il penser à un cas d'utilisation où cette hypothèse serait invalide et me ferait perdre des UUID?

567voto

Ivelin Points 1090

La regex pour uuid est:

 [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}
 

153voto

Matthew F. Robben Points 302

@ivelin: UUID peut avoir des majuscules. Vous devrez donc soit toLowerCase () la chaîne, soit utiliser:

[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}

J'aurais juste commenté ceci mais pas assez de rep :)

131voto

Gajus Kuizinas Points 4713

Les UUID de la version 4 ont la forme xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx où x est un chiffre hexadécimal et y un des 8, 9, A ou B. par exemple f47ac10b-58cc-4372-a567-0e02b2c3d479.

source: http://en.wikipedia.org/wiki/Uuid#Definition

C'est donc techniquement plus correct:

 /[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}/
 

44voto

Panos Points 11429

Je conviens que, par définition, votre expression rationnelle ne manque aucun UUID. Toutefois, il peut être utile de noter que si vous recherchez en particulier des identificateurs globaux uniques (GUID) de Microsoft, il existe cinq représentations de chaîne équivalentes pour un GUID:

 "ca761232ed4211cebacd00aa0057b223" 

"CA761232-ED42-11CE-BACD-00AA0057B223" 

"{CA761232-ED42-11CE-BACD-00AA0057B223}" 

"(CA761232-ED42-11CE-BACD-00AA0057B223)" 

"{0xCA761232, 0xED42, 0x11CE, {0xBA, 0xCD, 0x00, 0xAA, 0x00, 0x57, 0xB2, 0x23}}"
 

40voto

iGEL Points 2091

C'est la même chose que la réponse de @ Ivelin, mais plus courte:

 [0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}
 

Les expressions rationnelles de Gajus rejettent les UUID V1-3 et 5, même s'ils sont valides.

Prograide.com

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.

Powered by:

X