regex to extract version info
^v([0-9]+)([.])([0-9]+)(b)?([0-9]+)?$


Not much to say but:


seems a bit strange to capture the . since that's the only value that could be there. Also [.] could be written mode simply as \..
also seems a bit strange to capture the b, unless v1.1b is specifically allowed. And you're trying to find that last digit group even if b isn't present - not a bug, but could be made clearer.


To address the second point, make the whole beta part optional:

^v([0-9]+)\.([0-9]+)(?:(b)([0-9]+)?)?$


If beta with no number isn't allowed, this can be simplified (and drop capturing b also in this case):

^v([0-9]+)\.([0-9]+)(?:b([0-9]+))?$


(The (?:...) construct is a non-capturing group.)