目录
一、正则函数
1.REGEXP
2.regexp_replace
3.regexp_extract
二、正则表达式
三、特殊字符转义
一、正则函数
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] |
空白行 | \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 |
; | \\; |
{ | \\{ |
} | \\} |