Поиск и замена регулярных выражений в 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'
)