Have you considered turning to CPAN instead of rolling your own regular expressions to parse dates/times? My immediate instinct was to reach for e.g. Time::ParseDate, or one of the DateTime::Format::* family.
DateTime itself should then be able to format the result in any way you want. For instance:
use Modern::Perl '2015';
my $adate = "2017-01-29 11:30:07.370";
my $epoch_seconds = parsedate($adate, ZONE => "UTC");
my $dt = DateTime->from_epoch(epoch => $epoch_seconds);
say $dt->strftime("%m-%d-%Y %H:%M");