da questa stringa "mPpp1_Aaa23mBmmm" voglio sostituire le lettere masiucole con uno spazio più la lettera maiuscola, per intenderci devo ottenere questo "m Ppp1_ Aaa23m Bmmm"

ho già cercato in rete qualcosa ma non ho trovato nulla

con le espressioni regolari non riesco a trovare la posizione delle lettere maiuscole ne tantomeno a splittare la stringa

ho provato così:
$chars = preg_split('/[[:upper:]]/', $str, -1, PREG_SPLIT_OFFSET_CAPTURE);
echo "<pre>".print_r($chars,true)."</pre>";

ma mi restituisce questo array:

Array
(
[0] => Array
(
[0] => m
[1] => 0
)

[1] => Array
(
[0] => pp1_
[1] => 2
)

[2] => Array
(
[0] => aa23m
[1] => 7
)

[3] => Array
(
[0] => mmm
[1] => 13
)

)


mi servirebbe anche solo trovare la posizione all'interno della stringa delle lettere maiuscole, qualcosa di simile alla funzione strpos ma che accetti le espressioni regolari

qualcuno sa darmi una mano?

saluti a tutti