Condividi
Trovare una sottostringa con spazio in Postgres
Sto cercando in Postgres di trovare una sottostringa (substring) all'interno di una più grande contenente anche uno spazio, ossia la substring non è una parola singola, ma composta da due parole, come ad es il nome e cognome di una persona, attualmente ho scritto:
substring ((data) :: text from '(?: "Name": ") ([a-zA-Z0-9 ._-] *)')
La risposta (la sottostringa ritornata) dovrebbe essere simile a: "nome": "Mario Rossi" ... desidero fare in modo che trovi il nome completo (con lo spazio), ma con l'istruzione substring che ho scritto, attualmente trova solo a 'Mario'. Ho provato ad aggiungere \ s senza fortuna. Qualcuno ha idea di cosa sto facendo di sbagliato?
In Corso
5
PostgreSQL
17-10-2019
1 Risposta
2079 Visite
+1
Risposte ( 1 approvate )
Postgresql regex non ha alcun problema con l'identificatore \s (trova spazi, tabulazioni e new line). Quindi suppongo che tu abbia usato il \s alla fine della tua regex subito dopo il trattino (-) può portare differenza nel comportamento di \s nell'identificazione dello spazio. Per esempio se tu scrivi:
il trattino - vicino all'identificatore \s può essere un problema, tu puoi provare a farne l'escape precedendolo con il back slash \, in questo modo:
oppure metti l'identificatore dello spazio \s in qualsiasi posto della regex, come ad es. all'inizio, così:
prova così e non dovresti avere problemi.