Se você estiver tentando capturar a correspondência de regex que resultou da expressão,
substring faria o truque:select substring ('I have a dog', 'd[aeiou]g')
Retornaria qualquer correspondência, neste caso "cão".
Acho que o elo perdido do que você estava tentando acima era que você precisa colocar a expressão que deseja capturar entre parênteses.
regexp_matches funcionaria neste caso (se você incluísse parênteses em torno da expressão que deseja capturar), mas retornaria uma matriz de texto com cada correspondência. Se for uma correspondência, substring é meio conveniente. Então, voltando ao seu exemplo, se você está tentando retornar
stuff se e somente se estiver no início de uma coluna:select substring (column, '^(stuff)')
ou
select (regexp_matches (column, '^(stuff)'))[1]