Try forcing a BINARY comparison so it goes bit by bit.
This guys link was helpful in solving your problem. LINK
I duplicated the 2 you were getting and with the COLLATE Latin1_General_BIN it returned the expected 9.
SELECT PATINDEX('%[A-Z].%', 'he.llo MA. asd ' COLLATE Latin1_General_BIN )