正则表达式在Postgres中查找和替换

时间:2012-07-30 13:54:11

标签: regex postgresql

我有一个表,其中包含许多行,其中包含一个包含URL的列。 URL的格式为:

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

我想用http://example2.com/dotFile.com替换该列中的所有匹配项,同时保留以下内容后的所有内容:9999。我在regexp_matches和regexp_replace上找到了一些文档,但我无法完全理解它。

2 个答案:

答案 0 :(得分:57)

要替换固定字符串,请使用简单的replace()函数。

要替换动态字符串,您可以使用regexp_replace(),如下所示:

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

答案 1 :(得分:30)

如果您知道该网址,则不必使用正则表达式。 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')