MySQL-正则表达式规范
MySQL中的正则表达式采用的是PCRE的规范,匹配时按字符进行。
RLIKE
您可以使用RLIKE语句匹配正则表达式,支持的元字符如下表所示。
|
元字符 |
说明 |
|
^ |
行首。 |
|
$ |
行尾。 |
|
. |
任意字符。 |
|
* |
匹配前面的子表达式0次或多次。 |
|
+ |
匹配前面的子表达式1次或多次。 |
|
? |
匹配前面的子表达式0次或1次。 |
|
? |
匹配修饰符,当该字符跟在任何一个其他限制符 (* 、+、?、 {n}、 {n,}、 {n,m})后面时,匹配模式为非贪婪模式。非贪婪模式尽可能少的匹配所搜索的字符串, 而默认的贪婪模式则尽可能多的匹配所搜索的字符串。 |
|
A|B |
A或B。 |
|
(abc)* |
匹配abc序列0次或多次。 |
|
{n}或{m,n} |
匹配的次数。 |
|
[ab] |
匹配括号中的任一字符。模式匹配a或b。 |
|
[a-d] |
匹配a、b、c、d任一字符。 |
|
[^ab] |
^表示非,匹配任一非a非b的字符。 |
|
[::] |
见下表POSIX字符组。 |
|
\ |
转义符。 |
|
\n |
n为数字1-9,后向引用。 |
|
\d |
数字。 |
|
\D |
非数字。 |
字符组
|
字符组类型 |
字符组 |
说明 |
范围 |
|
POSIX字符组 |
[[:alnum:]] |
字母字符和数字字符 |
[a-zA-Z0-9] |
|
[[:alpha:]] |
字母 |
[a-zA-Z] |
|
|
[[:ascii:]] |
ASCII字符 |
[\x00-\x7F] |
|
|
[[:blank:]] |
空格字符和制表符 |
[ \t] |
|
|
[[:cntrl:]] |
控制字符 |
[\x00-\x1F\x7F] |
|
|
[[:digit:]] |
数字字符 |
[0-9] |
|
|
[[:graph:]] |
空白字符之外的字符 |
[\x21-\x7E] |
|
|
[[:lower:]] |
小写字母字符 |
[a-z] |
|
|
[[:print:]] |
[:graph:]和空白字符 |
[\x20-\x7E] |
|
|
[[:punct:]] |
标点符号 |
[][!”#$%&’()*+,./:;<=>? @\^_`{|}~-] |
|
|
[[:space:]] |
空白字符 |
[ \t\r\n\v\f] |
|
|
[[:upper:]] |
大写字母字符 |
[A-Z] |
|
|
[[:xdigit:]] |
十六进制字符 |
[A-Fa-f0-9] |
|
|
中文字符组 |
不涉及 |
包括汉字在内的双字节字符 |
[^\\x{00}-\\x{ff}] |
|
不涉及 |
中文字符 |
[\\x{4e00}-\\x{9fa5}] |
|
|
不涉及 |
中文标点 |
中文标点无统一的编码范围,您可以在搜索引擎上搜索中文标点符号Unicode码,然后结合运算符来逐个排除。 例如句号(。)对应正则表达式为[\\x{3002}]。执行select * from values ('你好。'),('nihao!') t(d) where d rlike '[\\x{3002}]';返回结果为你好。。 说明 如果要匹配单引号,可以用unicode0027,对应正则表达式为 [\\x{0027}]。 |
转义符
由于系统采用反斜线\作为转义符,因此正则表达式的模式中出现的\都要进行二次转义。例如正则表达式要匹配字符串a+b。其中+是正则中的一个特殊字符,因此要用转义的方式表达,在正则引擎中的表达方式是a\\+b。由于系统还要解释一层转义,因此能够匹配该字符串的表达式是a\\\+b。
select 'a+b' rlike 'a\\\+b';
+------+
| _c1 |
+------+
| 1 |
+------+
\, 由于在正则引擎中\是一个特殊字符,因此要表示为\\,而系统还要对表达式进行一次转义,因此写成\\\\。
select 'a\\b', 'a\\b' rlike 'a\\\b';
+-----+------+
| _c0 | _c1 |
+-----+------+
| a\b | 0 |
+-----+------+
select 'a\\b', 'a\\b' rlike 'a\\\\b';
+-----+------+
| _c0 | _c1 |
+-----+------+
| a\b | 1 |
+-----+------+
a\\b,而在输出结果中显示a\b,同样是因为MySQL会对表达式进行转义。\t这两个字符时,已经将其存为一个字符,因此在正则的模式中它也是一个普通的字符。
select 'a\tb', 'a\tb' rlike 'a\tb';
+---------+------+
| _c0 | _c1 |
+---------+------+
| a b | 1 |
+---------+------+
MySQL-正则表达式规范的更多相关文章
- [转载] 根据多年经验整理的《互联网MySQL开发规范》
原文: http://weibo.com/p/2304181380b3f180102vsg5 根据多年经验整理的<互联网MySQL开发规范> 写在前面:无规矩不成方圆.对于刚加入互联网的朋 ...
- [转发] 老叶观点:MySQL开发规范之我见
原文: http://imysql.com/2015/07/23/something-important-about-mysql-design-reference.shtml 老叶观点:MySQL开发 ...
- MySQL 数据库规范--调优篇(终结篇)
前言 这篇是MySQL 数据库规范的最后一篇--调优篇,旨在提供我们发现系统性能变弱.MySQL系统参数调优,SQL脚本出现问题的精准定位与调优方法. 目录 1.MySQL 调优金字塔理论 2.MyS ...
- MySql 正则表达式简介及使用
MySql正则表达式简介及使用 by:授客 QQ:1033553122 简介 正则表达式描述了一组字符串,该字符放置于REGEXP工具后面.作用是将一个正则表达式与一个文本串进行比较. 最简单的正则表 ...
- 从MySQL开发规范处看创业
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/n88Lpo/article/details/78099185 作者:唐勇.深圳市环球易购.MySQL ...
- MySQL数据库规范
Mysql数据库规范 一.基础规范 [强制]使用InnoDB存储引擎解读:InnoDB存储引擎是MySQL默认存储引擎,支持事务和行级锁,并发性能更好,CPU及内存缓存页优化使得资源利用率更高[强制] ...
- 二十二、MySQL 正则表达式
MySQL 正则表达式 在前面的章节我们已经了解到MySQL可以通过 LIKE ...% 来进行模糊匹配. MySQL 同样也支持其他正则表达式的匹配, MySQL中使用 REGEXP 操作符来进行正 ...
- mysql正则表达式及应用
mysql where子句的模式匹配 今天在应用中遇到了这样的一个问题,有一个字段 t1,其中的值类似于:1,1,1,2,3,3,4,4,5,5,2,4,3,2,1,2 需要从里面搜索出比如说:第一个 ...
- DB-MySQL:MySQL 正则表达式
ylbtech-DB-MySQL:MySQL 正则表达式 1.返回顶部 1. MySQL 正则表达式 在前面的章节我们已经了解到MySQL可以通过 LIKE ...% 来进行模糊匹配. MySQL 同 ...
- 建议收藏 - 专业的MySQL开发规范
为了项目的稳定,代码的高效,管理的便捷,在开发团队内部会制定各种各样的规范 这里分享一份我们定义的MySQL开发规范,欢迎交流拍砖 数据库对象命名规范 数据库对象 命名规范的对象是指数据库SCHEMA ...
随机推荐
- C语言基础之理论概述
C语言介绍 C语言是一种高级程序设计语言,由贝尔实验室的Dennis Ritchie在1972年开发.C语言是结构化编程语言,支持变量.数据类型.运算符.表达式.流程控制语句和函数等基本程序设计元素. ...
- 使用vs插件进行远程调试linux服务器
魔改Raspberry Debugger插件实现linux远程开发 本插件是在树莓派的远程调试下修改实现并未全部本人实现 插件基本使用: 插件目前只能在.net core 3.1到.net 6的框架下 ...
- [转帖]ntp导致的时钟回拨
https://zhuanlan.zhihu.com/p/587313130 我们的服务器时间校准一般是通过ntp进程去校准的.但由于校准这个动作,会导致时钟跳跃变化的现象.而这种情况里面,往往回拨最 ...
- [转帖]linux系统上free命令看到的buff/cache到底是什么
https://zhuanlan.zhihu.com/p/645904515 上周二一大早,小智准备早点去公司肝一篇技术文分享给大家的,哪成想,一到公司就被测试部的"卷王"拉去看问 ...
- [转帖]【TiDB】快速起步
1. 存储引擎的的功能 提供数据存储接口并持久化存储数据 2. LSM-tree 的特性 LSM-tree 结构本质上是一个用空间置换写入延迟,用顺序写入替换随机写入的数据结构 3. 数据库技术的发展 ...
- [转帖]Jmeter性能测试:高并发分布式性能测试
一.为什么要进行分布式性能测试 当进行高并发性能测试的时候,受限于Jmeter工具本身和电脑硬件的原因,无法满足我们对大并发性能测试的要求.基于这种场景下,我们就需要采用分布式的方式来实现我们高并发的 ...
- [转帖]Linux | crontab定时任务及开机自启项
本文总结如何使用 crontab 创建定时任务及开启自启项 1. 本文基于 CentOS 7.9 系统所写. Updated: 2022 / 9 / 5 Linux | crontab定时任务及开机自 ...
- [转帖]Linux—vi/vim全局替换
https://www.jianshu.com/p/4daa5dbc7dd5 vim全局替换 在linux系统中编辑文件或者配置时,常常会用到全局替换功能. 语法格式 :%s/oldWords/n ...
- [转帖]InnoDB表聚集索引层高什么时候发生变化
导读 本文略长,主要解决以下几个疑问 1.聚集索引里都存储了什么宝贝 2.什么时候索引层高会发生变化 3.预留的1/16空闲空间做什么用的 4.记录被删除后的空间能回收重复利用吗 1.背景信息 1.1 ...
- [转帖]查询机器序列号--Linux/esxi/windows
https://www.jianshu.com/p/6abaea79e0c3 Ipmitool--Linux&Esxi&Windows # ipmitool fru list|grep ...