I have a version number of the following form:

version.release.modification

where version, release and modification are either a set of digits or the '\*' wildcard character. Additionally, any of these numbers (and any preceding .) may be missing.

So the following are valid and parse as:

```
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

```

But these are not valid:

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

```

Can anyone provide me a not-too-complex regex to validate and retrieve the release, version and modification numbers?