PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Gruppo di acquisizione di espressioni regolari PostgreSQL in select

Se stai cercando di acquisire la corrispondenza regex risultante dall'espressione, allora substring farebbe il trucco:

select substring ('I have a dog', 'd[aeiou]g')

Restituirebbe qualsiasi corrispondenza, in questo caso "cane".

Penso che l'anello mancante di quello che stavi provando sopra fosse che devi mettere l'espressione che vuoi catturare tra parentesi. regexp_matches funzionerebbe in questo caso (se avessi incluso parentesi attorno all'espressione che volevi acquisire), ma restituirebbe una matrice di testo con ogni corrispondenza. Se è una corrispondenza, substring è abbastanza conveniente.

Quindi, tornando al tuo esempio, se stai cercando di restituire stuff se e solo se si trova all'inizio di una colonna:

select substring (column, '^(stuff)')

o

select (regexp_matches (column, '^(stuff)'))[1]