<?php
$routes = [
'/path/(\d+)/new/upload$',
'/path/selectable_ajax_placements/(\w+)/(\d+)',
'/path/anotherpath/to/(\d+)/from/([\d\-\_]+)/to/([\d\-\_]+)$',
'/path/list$',
];
foreach ($routes as $route) {
echo preg_replace_callback('#(?<=/)([^/]*?[^/a-z0-9_\-][^/]*)(?=/|$)#i', function($match) {
return preg_match('#^[a-z0-9_\-]+\$$#i', $match[1]) ? substr($match[1], 0, -1) : '1';
}, $route), "\n";
}
preferences:
108.37 ms | 406 KiB | 5 Q