数据仓库服务 GAUSSDB(DWS)-字符处理函数和操作符:regexp_replace(string, pattern, replacement [,flags ])

时间:2024-11-28 17:38:52

regexp_replace(string, pattern, replacement [,flags ])

描述:替换匹配POSIX正则表达式的子字符串。 如果没有匹配pattern,那么返回不加修改的string串。 如果有匹配,则返回的string串里面的匹配子串将被replacement串替换掉。

replacement串可以包含\n, 其中\n是1到9, 表明string串里匹配模式里第n个圆括号子表达式的子串应该被插入, 并且它可以包含\&表示应该插入匹配整个模式的子串。

可选的flags参数包含零个或多个改变函数行为的单字母标记,见下表。

表1 flags参数的可选项

选项

描述

g

表示替换每一个匹配的子字符串而不仅仅是第一个(默认仅替换第一个匹配的子字符串)

B

默认情况下使用Henry Spencer正则库及其正则语法。指定B选项后,表示优先选用boost regex正则库及其正则语法。

以下两种情况在指定了B选项时,也会自动转换为选择Henry Spencer正则库及其正则语法:

  • flags同时指定了p、q、w、x中的任意个字符。
  • string或pattern参数中含有多字节字符。

b

表示按照BRE(POSIX Basic Regular Expression)匹配模式的规则进行匹配。

c

大小写敏感匹配

e

表示按照ERE(POSIX Extended Regular Expression)匹配模式的规则进行匹配。当b和e都未指定时,如果选用的是Henry Spencer正则库,则按照ARE(Advanced Regular Expression,类似于Perl Regular Expression)匹配模式的规则进行匹配;如果选用的是boost regex正则库,则按照Perl Regular Expression匹配模式的规则进行匹配。

i

大小写不敏感匹配

m

换行敏感匹配,与选项n同义。

n

换行敏感匹配。此选项生效时,换行符影响元字符(.、^、$和[^)的匹配。

p

部分换行敏感匹配,此选项生效时,换行符影响元字符(.和[^)的匹配。部分是相对选项n而言。

q

重置正则表达式为加双引号的文本字符串,所有都是普通字符。

s

非换行敏感匹配。

t

紧凑语法(缺省)。该选项生效时,所有字符都很重要。

w

反部分换行敏感匹配,此选项生效时,换行符影响元字符(^和$)的匹配。部分是相对选项n而言。

x

扩展语法。与紧凑语法相对,在扩展的语法中,正则表达式中的空白字符被忽略。空白字符包括空格、水平制表符、新行、和任何属于space字符表的字符。

返回值类型:varchar

示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
SELECT regexp_replace('Thomas', '.[mN]a.', 'M');
 regexp_replace
----------------
 ThM
(1 row)
SELECT regexp_replace('foobarbaz','b(..)', E'X\\1Y', 'g') AS RESULT;                                                    
   result    
-------------
 fooXarYXazY
(1 row)
support.huaweicloud.com/sqlreference-830-dws/dws_06_0030.html
推荐文章