- preg_replace: documentation ( source)
<?php
$tokens = [
':rr'=>5,
':tipo'=>'\[A-Z]'
];
$regex = '/#([a-zA-z0-9_]+)(:[a-zA-Z]+)/';
$pattern = '#nombre:tipo';
echo preg_replace($regex, "(?<$1>{$tokens[${2}]})", $pattern);
/*echo preg_replace_callback($regex, function (array $matches) {
$tokens = [
':rr'=>5,
':tipo'=>'\[A-Z]'
];
echo "(?<{$matches[1]}>{$tokens[$matches[2]]})";
}, $pattern);*/