添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

PostgreSQL 的 REGEXP_REPLACE() 函数,用新的子字符串替换与 POSIX 正则表达式 匹配的子字符串。

请注意,如果您想执行简单的字符串替换,可以使用 REPLACE() 函数。

PostgreSQL 的 REGEXP_REPLACE() 函数的语法如下:

REGEXP_REPLACE(source, pattern, replacement_string,[, flags])

REGEXP_REPLACE()函数接受四个参数:

1) source

source是一个应该进行替换的字符串。

2) pattern

pattern是一个 POSIX 正则表达式,用于匹配应替换的子字符串。

3) replacement_string

replacement_string是一个字符串,用于替换与正则表达式模式匹配的子字符串。

4) flags

flags参数是一个或多个控制函数匹配行为的字符,例如,i允许不区分大小写的匹配,n允许匹配任何字符以及换行符。

PostgreSQL 的REGEXP_REPLACE()函数返回一个新字符串,其中与正则表达式模式匹配的子字符串,被替换为新的子字符串。

让我们看一些示例来了解REGEXP_REPLACE()函数的工作原理。

A) 名称重新排列

假设您有一个以下格式的人名:

first_name last_name

例如,John Doe

并且出于报告目的,您希望按如下方式重新排列此名称。

last_name, first_name

为此,您可以使用REGEXP_REPLACE()函数,如下所示:

SELECT REGEXP_REPLACE('John Doe','(.*) (.*)','\2, \1');

该语句的输出是:

'Doe, John'

B) 字符串移除

假设您有混合了字母和数字的字符串数据,如下所示:

ABC12345xyz

以下语句从源字符串中删除所有字母,例如 A、B、C 等:

SELECT REGEXP_REPLACE('ABC12345xyz','[[:alpha:]]','','g');
'12345'

在这个例子中,

  • [[:alpha:]] 匹配任何字母
  • ''是替换字符串
  • 'g'指示函数删除所有字母,而不仅仅是第一个字母。
  • 同样,您可以使用以下语句删除源字符串中的所有数字:

    SELECT REGEXP_REPLACE('ABC12345xyz','[[:digit:]]','','g');
    
    'ABCxyz'
    

    C) 删除多余空格

    以下示例删除字符串中多次出现的不需要的空格。

    SELECT REGEXP_REPLACE('This  is    a   test   string','( ){2,}',' ');
    

    下图说明了输出:

    在本教程中,您学习了如何使用 PostgreSQL 的REGEXP_REPLACE()函数,将与正则表达式匹配的子字符串替换为新的子字符串。

    PostgreSQL 教程:字符串函数

    PostgreSQL 文档:字符串函数和操作符