Поиск и замена регулярных выражений в Postgres

У меня есть таблица, содержащая несколько строк с столбцами, содержащими URL. URL-адрес имеет форму:

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

Я хотел бы заменить все совпадения в этом столбце на http://example2.com/dotFile.com, сохраняя все после: 9999. Я нашел некоторую документацию по regexp_matches и regexp_replace, но я не могу ее обернуть.

Ответ 1

если вы знаете URL-адрес, вам не нужно использовать регулярное выражение. Функция replace() должна работать для вас:

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

вы можете попробовать:

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

Ответ 2

Чтобы заменить фиксированную строку, используйте простую функцию replace().

Чтобы заменить динамическую строку, вы можете использовать regexp_replace() следующим образом:

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