RegexBuddy da esta advertencia sobre el primer '?'
y si lo elimina, parece funcionar, es decir, ^(.+[^\/:])(?=[?\/]|$)
sin embargo, si está tratando de analizar la baseurl, esa expresión regular no funcionará. Usa esto en su lugar:
select regexp_replace('....', '^(.*:)//([a-z\-.]+)(:[0-9]+)?(.*)$', '\2')