preg_replace заменяет ту часть строки $route, что в фигурных скобках '{id:\d+}' на строку '(?P\d+)', которая представляет собой часть нового РВ. Переменная $route в результате станет такой: '#^post/(?P\d+)$#'
Далее переменная $uri = 'post/15' сопоставляется с этим шаблоном.
?P — именованная подмаска, которая позволит обращаться к значению $matches['id']
Короче, читайте доки