Domanda Espressione regolare trova e sostituisce in Postgres


Ho una tabella che contiene un numero di righe con colonne contenenti un URL. L'URL è nella forma:

http://one.example1.com:9999/dotFile.com

Vorrei sostituire tutte le partite in quella colonna con http://example2.com/dotFile.com pur mantenendo tutto dopo: 9999. Ho trovato della documentazione su regexp_matches e regexp_replace, ma non riesco a capirlo.


28
2017-07-30 13:54


origine


risposte:


se conosci l'url, non devi usare regex. La funzione replace () dovrebbe funzionare per voi:

replace(string text, from text, to text)        
Replace all occurrences in string of substring from with substring to   
example: replace('abcdefabcdef', 'cd', 'XX')    abXXefabXXef

potresti provare:

replace(yourcolumn, 'one.example1.com:9999','example2.com')

27
2017-07-30 14:04



Per sostituire una stringa fissa, usa il semplice replace() funzione.

Per sostituire una stringa dinamica, puoi usare regexp_replace() come questo:

UPDATE
  YourTable
SET
  TheColumn = regexp_replace(
    TheColumn, 'http://[^:\s]+:9999(\S+)', 'http://example2.com\1', 'g'
  )

45
2017-07-30 14:04