一、正则函数
1.REGEXP
语法格式: A REGEXP B (A是需要匹配的字符串,B是正则表达式字符串)
操作类型: strings
描述: 功能与RLIKE相同
select '你好啊' regexp '你好';
select '你好啊' regexp '不好';
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] |
空白行 | ns*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*$ |
^ | 匹配输入字符串开始的位置。 |
---|---|
$ | 匹配输入字符串结尾的位置。 |
. | 匹配除"rn"之外的任何单个字符。 |
[...] | 字符集。匹配包含的任一字符。例如,"[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 | 匹配任意的空白符,相等于 [tnrf] |
\S | 匹配任意不是空白符的字符 |
\d | 匹配数字,类似 [0-9] |
\D | 匹配任意非数字的字符 |
\G | 当前搜索的开头 |
\n | 换行符 |
\b | 通常是单词分界位置,但如果在字符类里使用代表退格 |
\B | 匹配不是单词开头或结束的位置 |
\t | 制表符 |
\Q | 开始引号:Q(a b)*3E 可匹配文本 "(a b)*3"。 |
\E | 结束引号:Q(a b)*3E 可匹配文本 "(a b)*3"。 |
三、特殊字符转义
要转义的字符 | 转义字符 |
---|---|
. | \. |
\\ | |
换行符 | \n |
; | \; |
{ | \{ |
} | \} |