$re = '/img\.shields\.io/static/v1\.svg\?label=PyCalVer&message=(?P<pycalver>v(?P<year>\d{4})(?P<month>(?:0[0-9]|1[0-2]))\.(?P<bid>\d{4,})(?:-(?P<tag>(?:alpha|beta|dev|rc|post|final)))?)&color=blue/m';
$str = '
[version_img]: https://img.shields.io/static/v1.svg?label=PyCalVer?message=v201902.0025&color=blue
[version_img]: https://img.shields.io/static/v1.svg?label=PyCalVer&message=v201902.0025&color=blue';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php