数据仓库服务 GAUSSDB(DWS)-模式匹配操作符:POSIX正则表达式
POSIX正则表达式
正则表达式是一个字符序列,它是定义一个串集合 (一个正则集)的缩写。 如果一个串是正则表达式描述的正则集中的一员时, 那么就说这个串匹配该正则表达式。 POSIX正则表达式提供了比LIKE和SIMILAR TO操作符更强大的含义。表2列出了所有可用于POSIX正则表达式模式匹配的操作符。
操作符 |
描述 |
例子 |
---|---|---|
~ |
匹配正则表达式,大小写敏感 |
'thomas' ~ '.*thomas.*' |
~* |
匹配正则表达式,大小写不敏感 |
'thomas' ~* '.*Thomas.*' |
!~ |
不匹配正则表达式,大小写敏感 |
'thomas' !~ '.*Thomas.*' |
!~* |
不匹配正则表达式,大小写不敏感 |
'thomas' !~* '.*vadim.*' |
- 匹配规则
- 与LIKE不同,正则表达式允许匹配串里的任何位置,除非该正则表达式显式地挂接在串的开头或者结尾。
- 除了上文提到的元字符外, POSIX正则表达式还支持下表的模式匹配元字符。
表3 模式匹配元字符 元字符
含义
^
表示串开头的匹配。
$
表示串末尾的匹配。
.
匹配任意单个字符。
- 正则表达式函数
POSIX正则表达式支持下面函数。
- substring(string from pattern)函数提供了抽取一个匹配POSIX正则表达式模式的子串的方法。
- regexp_replace(string, pattern, replacement [,flags ])函数提供了将匹配POSIX正则表达式模式的子串替换为新文本的功能。
- regexp_matches(string text, pattern text [, flags text])函数返回一个文本数组,该数组由匹配一个POSIX正则表达式模式得到的所有被捕获子串构成。
- regexp_split_to_table(string text, pattern text [, flags text])函数把一个POSIX正则表达式模式当作一个定界符来分离一个串。
- regexp_split_to_array(string text, pattern text [, flags text ])和regexp_split_to_table类似,是一个正则表达式分离函数,不过它的结果以一个text数组的形式返回。
正则表达式分离函数会忽略零长度的匹配,这种匹配发生在串的开头或结尾或者正好发生在前一个匹配之后。这和正则表达式匹配的严格定义是相悖的,后者由regexp_matches实现,但是通常前者是实际中最常用的行为。
- 示例
1 2 3 4 5
SELECT 'abc' ~ 'Abc' AS RESULT; result -------- f (1 row)
1 2 3 4 5
SELECT 'abc' ~* 'Abc' AS RESULT; result -------- t (1 row)
1 2 3 4 5
SELECT 'abc' !~ 'Abc' AS RESULT; result -------- t (1 row)
1 2 3 4 5
SELECT 'abc'!~* 'Abc' AS RESULT; result -------- f (1 row)
1 2 3 4 5
SELECT 'abc' ~ '^a' AS RESULT; result -------- t (1 row)
1 2 3 4 5
SELECT 'abc' ~ '(b|d)'AS RESULT; result -------- t (1 row)
1 2 3 4 5
SELECT 'abc' ~ '^(b|c)'AS RESULT; result -------- f (1 row)
虽然大部分的正则表达式搜索都能很快地执行,但是正则表达式仍可能被人为地控制,通过任意长的时间和任意量的内存进行处理。不建议从非安全模式来源接受正则表达式搜索模式,如果必须这样做,建议加上语句超时限制。使用SIMILAR TO模式的搜索具有同样的安全性危险, 因为SIMILAR TO提供了很多和POSIX-风格正则表达式相同的能力。LIKE搜索比其他两种选项简单得多,因此在接受非安全模式来源搜索时要更安全些。
- GaussDB数据库函数和字符串_高斯数据库优势_新建高斯数据库_高斯协议
- 数据仓库服务GaussDB(DWS)_SQL on Anywhere
- DWS安全_数据仓库服务安全_DWS数据安全管理_DWS安全保障_DWS安全策略
- 调用GaussDB(DWS) API接口_数据仓库服务调用API_如何调用API_在DWS中调用API
- GaussDB(DWS)常用SQL_常用SQL命令_SQL语法
- DWS资源管理_GaussDB(DWS)资源管理作用_DWS资源管控
- DWS产品介绍_DWS产品优势_DWS功能_DWS使用场景_DWS是什么
- GAUSS(DWS)工具_gsql工具_DataStudio工具_DSC工具
- GaussDB数据库函数_GaussDB函数和操作符_高斯数据库函数-华为云
- 华为云资料 2021年 7月刊