web-dev-qa-db-ja.com

Postgresでの正規表現の検索と置換

URLを含む列を持つ行の数を含むテーブルがあります。 URLは次の形式です。

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

:9999以降をすべて保持しながら、その列のすべての一致をhttp://example2.com/dotFile.comに置き換えたいと思います。 regexp_matchesとregexp_replaceについてのドキュメントをいくつか見つけましたが、頭を完全に包むことはできません。

30
ringocub

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')
31
Kent

固定文字列を置き換えるには、単純なreplace()関数を使用します。

動的な文字列を置き換えるには、次のようにregexp_replace()を使用できます。

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