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 |
+-----+------+
 
说明 在MySQL中写a\\b,而在输出结果中显示a\b,同样是因为MySQL会对表达式进行转义。
如果字符串中有制表符TAB,系统在读入\t这两个字符时,已经将其存为一个字符,因此在正则的模式中它也是一个普通的字符。

select 'a\tb', 'a\tb' rlike 'a\tb';
+---------+------+
| _c0 | _c1 |
+---------+------+
| a b | 1 |
+---------+------+

MySQL-正则表达式规范的更多相关文章

  1. [转载] 根据多年经验整理的《互联网MySQL开发规范》

    原文: http://weibo.com/p/2304181380b3f180102vsg5 根据多年经验整理的<互联网MySQL开发规范> 写在前面:无规矩不成方圆.对于刚加入互联网的朋 ...

  2. [转发] 老叶观点:MySQL开发规范之我见

    原文: http://imysql.com/2015/07/23/something-important-about-mysql-design-reference.shtml 老叶观点:MySQL开发 ...

  3. MySQL 数据库规范--调优篇(终结篇)

    前言 这篇是MySQL 数据库规范的最后一篇--调优篇,旨在提供我们发现系统性能变弱.MySQL系统参数调优,SQL脚本出现问题的精准定位与调优方法. 目录 1.MySQL 调优金字塔理论 2.MyS ...

  4. MySql 正则表达式简介及使用

    MySql正则表达式简介及使用 by:授客 QQ:1033553122 简介 正则表达式描述了一组字符串,该字符放置于REGEXP工具后面.作用是将一个正则表达式与一个文本串进行比较. 最简单的正则表 ...

  5. 从MySQL开发规范处看创业

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/n88Lpo/article/details/78099185 作者:唐勇.深圳市环球易购.MySQL ...

  6. MySQL数据库规范

    Mysql数据库规范 一.基础规范 [强制]使用InnoDB存储引擎解读:InnoDB存储引擎是MySQL默认存储引擎,支持事务和行级锁,并发性能更好,CPU及内存缓存页优化使得资源利用率更高[强制] ...

  7. 二十二、MySQL 正则表达式

    MySQL 正则表达式 在前面的章节我们已经了解到MySQL可以通过 LIKE ...% 来进行模糊匹配. MySQL 同样也支持其他正则表达式的匹配, MySQL中使用 REGEXP 操作符来进行正 ...

  8. mysql正则表达式及应用

    mysql where子句的模式匹配 今天在应用中遇到了这样的一个问题,有一个字段 t1,其中的值类似于:1,1,1,2,3,3,4,4,5,5,2,4,3,2,1,2 需要从里面搜索出比如说:第一个 ...

  9. DB-MySQL:MySQL 正则表达式

    ylbtech-DB-MySQL:MySQL 正则表达式 1.返回顶部 1. MySQL 正则表达式 在前面的章节我们已经了解到MySQL可以通过 LIKE ...% 来进行模糊匹配. MySQL 同 ...

  10. 建议收藏 - 专业的MySQL开发规范

    为了项目的稳定,代码的高效,管理的便捷,在开发团队内部会制定各种各样的规范 这里分享一份我们定义的MySQL开发规范,欢迎交流拍砖 数据库对象命名规范 数据库对象 命名规范的对象是指数据库SCHEMA ...

随机推荐

  1. ElasticSearch 通过 Kibana 与 ElasticSearch-head 完成增删改查

    本文为博主原创,未经允许不得转载: 1.  安装并配置 elasticSearch ,kibana, elasticsearch-head docker 安装 ElasticSearch 和 Kiba ...

  2. [转帖]Redis 内存淘汰策略 (史上最全)

    1.前言 Redis内存淘汰策略,是被很多小伙伴忽略的知识盲区,注意,是盲区. 注意,Redis如果内存淘汰策略配置不合理,可能会导致Redis无法服务. 所以,使用此文,对Redis内存淘汰策略专门 ...

  3. [转帖]JMeter 接口测试快速入门

    https://my.oschina.net/choerodon/blog/5289725   JMeter简介 JMeter 的特性: 对于多种协议的功能测试和性能测试 Web - HTTP, HT ...

  4. [转帖]TiDB 配置参数修改与系统变量修改步骤

    https://tidb.net/blog/bda86911   注意事项1:tidb-test 为集群名称   注意事项2:参数修改前与修改后备份.tiup目录   注意事项3:通过 tiup cl ...

  5. [转帖]PD 配置文件描述

    https://docs.pingcap.com/zh/tidb/stable/pd-configuration-file PD 配置文件比命令行参数支持更多的选项.你可以在 conf/config. ...

  6. [转帖]Kafka可靠性之HW与Leader Epoch

    <深入理解Kafka:核心设计与实现原理>是基于2.0.0版本的书 在这本书中,终于看懂了笔者之前提过的几个问题 准备知识 1.leader里存着4个数据:leader_LEO.leade ...

  7. [转帖]unmatched(riscv64)上编译,安装和移植SPEC CPU 2006

    https://zhuanlan.zhihu.com/p/429399630 Linux ubuntu 5.11.0-1021-generic #22-Ubuntu SMP Tue Sep 28 15 ...

  8. Oracle 设置白名单过滤

    最近有一个需求  要求开发人员不能随便连接测试的数据库 又不想太过复杂,部分人还得进行连结. 查了下往上是有方案的: 就是 TCP_VALIDNODE_CHECKING 参数 解决方法和说明如下 来源 ...

  9. dispaly结合背景图片会提升加载性能

    1.display的常见现象 我们很多人都知道,display可以让元素实现隐藏或者显示. 或者让行级元素变成块级元素. 对它的认识也是比较准确的. 如果一个元素使用了display:none; 那么 ...

  10. KubeSphere2.1踩坑记

    至少两台机器.推荐4X16.(完全安装KubeSphere会吃掉10G+内存) k8s安装(略1.14.8)可参考我上一篇文章或者基于kubeadmin快速安装 KubeSphere2.1前置条件 1 ...