I really wish Microsoft actually supported the PCRE regex code. Sadly, it does not.
Your request (pretty easily handled in other languages) could be done like this:
$s -replace '^([a-z])(.+)([a-z])(\d\d)$', '\U$1\E$2\U$3\E$4'
Where "/U" says to convert characters that follow to uppercase, and "/E" says to cease the conversion.
Unfortunately, you'll have to resort to other means to accomplish this:
$s -match '^([a-z])(.+)([a-z])(\d\d)$'
$u = "{0}{1}{2}{3}" -f $matches[1].ToUpper(), $matches[2], $matches[3].ToUpper(), $matches[4]
It does the same thing, but the replacement happens outside the regex. :-(