目录

一、正则函数

1.REGEXP

2.regexp_replace

3.regexp_extract

二、正则表达式

三、特殊字符转义


一、正则函数

1.REGEXP

语法格式: A REGEXP B (A是需要匹配的字符串,B是正则表达式字符串)

操作类型: strings 

描述: 功能与RLIKE相同

select '你好啊' regexp '你好';

grafana table value mapping正则匹配_字符串

select '你好啊' regexp '不好';

grafana table value mapping正则匹配_正则表达式_02

2.regexp_replace

语法格式: regexp_replace(string A, string B, string C) 

返回值: string

说明:将字符串A中的符合java正则表达式B的部分替换为C。注意,在有些情况下要使用转义字符,类似oracle中的regexp_replace函数。

select regexp_replace('四川办第1名', '\\d+', '一');

3.regexp_extract

语法格式:regexp_extract(string subject, string pattern, int index)

返回值: string

说明:将字符串subject按照pattern正则表达式的规则拆分,返回index指定的字符,index从1开始计。

select regexp_extract('四川办:第1名', '([0-9]+)', 1);

二、正则表达式

匹配规则

表达式

中文字符

[\u4e00-\u9fa5]

双字节字符(包含汉字在内)

[^\x00-\xff]

空白行

\n\s*\r

email地址

[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?

网址URL

[a-zA-z]+://[^\s]*

国内电话号码

\d{3}-\d{8}|\d{4}-\{7,8}

腾讯qq号

[1-9][0-9]{4,}

中国邮政编码

[1-9]\d{5}(?!\d)

18位身份证号

^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$

(年-月-日)格式日期

([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8])))

正整数

^[1-9]\d*$

负整数

^-[1-9]\d*$

整数

^-?[1-9]\d*$

非负整数(正整数+0)

^[1-9]\d*|0$

非正整数(负整数+0)

^-[1-9]\d*|0$

正浮点数

^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$

负浮点数

^-[1-9]\d*\.\d*|-0\.\d*[1-9]\d*$

^

匹配输入字符串开始的位置。

$

匹配输入字符串结尾的位置。

.

匹配除"\r\n"之外的任何单个字符。

[...]

字符集。匹配包含的任一字符。例如,"[abc]"匹配"plain"中的"a"。

[^...]

反向字符集。匹配未包含的任何字符。例如,"[^abc]"匹配"plain"中"p","l","i","n"。

\\A

匹配输入字符串开始的位置(无多行支持)

\\z

字符串结尾(类似$,但不受处理多行选项的影响)

\\Z

字符串结尾或行尾(不受处理多行选项的影响)

re*

重复零次或更多次

re+

重复一次或更多次

re?

重复零次或一次

re{ n}

重复n次

re{ n,}

re{ n, m}

重复n到m次

a|b

匹配 a 或者 b

(re)

匹配 re,并捕获文本到自动命名的组里

(?: re)

匹配 re,不捕获匹配的文本,也不给此分组分配组号

(?> re)

贪婪子表达式

\\w

匹配字母或数字或下划线或汉字

\\W

匹配任意不是字母,数字,下划线,汉字的字符

\\s

匹配任意的空白符,相等于 [\t\n\r\f]

\\S

匹配任意不是空白符的字符

\\d

匹配数字,类似 [0-9]

\\D

匹配任意非数字的字符

\\G

当前搜索的开头

\\n

换行符

\\b

通常是单词分界位置,但如果在字符类里使用代表退格

\\B

匹配不是单词开头或结束的位置

\\t

制表符

\\Q

开始引号:\Q(a+b)*3\E 可匹配文本 "(a+b)*3"。

\\E

结束引号:\Q(a+b)*3\E 可匹配文本 "(a+b)*3"。

三、特殊字符转义

要转义的字符

转义字符

.

\\.

\

\\\\

换行符

\\n

\\;

{

\\{

}

\\}