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) 名称重新排列
假设您有一个以下格式的人名:
例如,John Doe
并且出于报告目的,您希望按如下方式重新排列此名称。
为此,您可以使用REGEXP_REPLACE()
函数,如下所示:
SELECT REGEXP_REPLACE('John Doe','(.*) (.*)','\2, \1');
该语句的输出是:
B) 字符串移除
假设您有混合了字母和数字的字符串数据,如下所示:
以下语句从源字符串中删除所有字母,例如 A、B、C 等:
SELECT REGEXP_REPLACE('ABC12345xyz','[[:alpha:]]','','g');
在这个例子中,
[[:alpha:]]
匹配任何字母
''
是替换字符串
'g'
指示函数删除所有字母,而不仅仅是第一个字母。
同样,您可以使用以下语句删除源字符串中的所有数字:
SELECT REGEXP_REPLACE('ABC12345xyz','[[:digit:]]','','g');
C) 删除多余空格
以下示例删除字符串中多次出现的不需要的空格。
SELECT REGEXP_REPLACE('This is a test string','( ){2,}',' ');
下图说明了输出:
在本教程中,您学习了如何使用 PostgreSQL 的REGEXP_REPLACE()
函数,将与正则表达式匹配的子字符串替换为新的子字符串。
PostgreSQL 教程:字符串函数
PostgreSQL 文档:字符串函数和操作符