PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Grupo de captura de expressão regular do PostgreSQL em select


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]