Таким образом, в основном вы просто хотите удалить строку запроса и фрагменты, то есть все после ?
, включая ?
и аналог для #
.
Это будет:
regexp_replace(url, '[\?#].*', '');
Я бы не стал удалять _
и %
, поскольку они могут иметь значение при идентификации основного ресурса (_
- это только допустимый символ, а %
вводит кодированный символ URL).