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

Signaler
-
cs_sylda
Messages postés
1
Date d'inscription
mardi 6 avril 2010
Statut
Membre
Dernière intervention
2 août 2013
-
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 ?
A voir également:

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]+)$
Messages postés
38737
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
6 avril 2020

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 ;-))
Messages postés
1
Date d'inscription
mardi 6 avril 2010
Statut
Membre
Dernière intervention
2 août 2013

Last but not least ! Cool ! Merci.

--