Una expresión regular para el análisis del número de versión

Tengo un número de versión de la siguiente forma:

version.release.modification

a versión, el lanzamiento y la modificación de @where son un conjunto de dígitos o el carácter comodín '*'. Además, puede faltar cualquiera de estos números (y cualquier anterior).

Así que lo siguiente es válido y se analiza como:

1.23.456 = version 1, release 23, modification 456
1.23     = version 1, release 23, any modification
1.23.*   = version 1, release 23, any modification
1.*      = version 1, any release, any modification
1        = version 1, any release, any modification
*        = any version, any release, any modification

Pero estos no son válidos:

*.12
*123.1
12*
12.*.34

Puede alguien proporcionarme una expresión regular no demasiado compleja para validar y recuperar los números de versión, versión y modificación?

Respuestas a la pregunta(19)

Su respuesta a la pregunta