Regex shell (bash) - Valider un numéro de version

sylda - 3 juin 2013 à 19:20
cs_sylda Messages postés 1 Date d'inscription mardi 6 avril 2010 Statut Membre Dernière intervention 2 août 2013 - 2 août 2013 à 15:39
Bonjour,

j'ai un souci dans le décodage d'un numéro de version d'un logiciel.
La numérotation de version doit être de la forme :
Vi[.j][.k][_l]
i : indice version majeure
j : indice révision
k : indice de patch
l : sous-indice de patch

Exemples de version qui devraient marcher:
v7 KO (à cause du v minuscule)
V7 OK
V7.8 OK
V7.8.9 OK
V7.8.9_10 OK
V77.78.79_80 OK
V77_78 KO (à cause du 'underscore')
V77 .78 KO (à cause de l'espace)
V77-78 KO (à cause du tiret)

Mes expressions :
essai 1:
^V[0-9]+([\.0-9]*|[\.0-9]+[\_0-9]+)

essai 2:
^V[0-9]+(\.*[0-9]*)(\.*[0-9]*|\.*[0-9]*\_*[0-9]*)

Est-ce que quelqu'un voit une solution svp ?

3 réponses

Bonjour,
la nuit porte conseil...
J'ai trouvé un truc moche, mais qui marche :
^V([0-9]+|[0-9]+\.[0-9]+|[0-9]+\.[0-9]+\.[0-9]+|[0-9]+\.[0-9]+\.[0-9]+\_[0-9]+)$
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021
1 août 2013 à 23:03
Salut,

$ cat brol
v7
V7
V7.8
V7.8.9
V7.8.9_10
V77.78.79_80
V77_78
V77 .78
V77-78

$ egrep '^V([0-9]+|[0-9]+((\.[0-9]+){1,2})(_[0-9]+)*)$' brol 
V7
V7.8
V7.8.9
V7.8.9_10
V77.78.79_80

2 mois de retard certes... mais bon ;-))
0
cs_sylda Messages postés 1 Date d'inscription mardi 6 avril 2010 Statut Membre Dernière intervention 2 août 2013
2 août 2013 à 15:39
Last but not least ! Cool ! Merci.

--
0
Rejoignez-nous