RegexBuddy dà questo avviso sul primo '?'
e se lo rimuovi, sembra funzionare, cioè ^(.+[^\/:])(?=[?\/]|$)
tuttavia, se stai cercando di analizzare il baseurl, la regex non funzionerà. Usa questo invece:
select regexp_replace('....', '^(.*:)//([a-z\-.]+)(:[0-9]+)?(.*)$', '\2')