正则表达式(regex)是定义复杂查询的一个强有力的工具。 这里是一个简单的资料,它忽略了一些详细的信息。
  正则表达式定义了一个字符串的规则。最简单的正则表达式不包含任何保留字。例如,正则表达式hello只和字符串“hello”匹配。

  一般的正则表达式使用了某些特殊的结构,所以它能匹配更多的字符串。例如,正则表达式hello|word既能匹配字符串“hello”也能匹配字符串“word”。

  举一个更复杂一点的例子,正则表达式B[an]*s可以匹配字符串“Bananas”、“Baaaaas”、“Bs”以及其他任何以B开头以s结尾的字符串,中间可以包括任意个a和任意个n的组合。

  一个正则表达式中的可以使用以下保留字

^

所匹配的字符串以后面的字符串开头

mysql> select "fonfo" REGEXP "^fo$"; -> 0(表示不匹配)

mysql> select "fofo" REGEXP "^fo"; -> 1(表示匹配)

$

所匹配的字符串以前面的字符串结尾

mysql> select "fono" REGEXP "^fono$"; -> 1(表示匹配)

mysql> select "fono" REGEXP "^fo$"; -> 0(表示不匹配)

.

匹配任何字符(包括新行)

mysql> select "fofo" REGEXP "^f.*"; -> 1(表示匹配)

mysql> select "fonfo" REGEXP "^f.*"; -> 1(表示匹配)

a*

匹配任意多个a(包括空串)

mysql> select "Ban" REGEXP "^Ba*n"; -> 1(表示匹配)

mysql> select "Baaan" REGEXP "^Ba*n"; -> 1(表示匹配)

mysql> select "Bn" REGEXP "^Ba*n"; -> 1(表示匹配)

a+

匹配任意多个a(不包括空串)

mysql> select "Ban" REGEXP "^Ba+n"; -> 1(表示匹配)

mysql> select "Bn" REGEXP "^Ba+n"; -> 0(表示不匹配)

a?

匹配一个或零个a

mysql> select "Bn" REGEXP "^Ba?n"; -> 1(表示匹配)

mysql> select "Ban" REGEXP "^Ba?n"; -> 1(表示匹配)

mysql> select "Baan" REGEXP "^Ba?n"; -> 0(表示不匹配)

de|abc

匹配de或abc

mysql> select "pi" REGEXP "pi|apa"; -> 1(表示匹配)

mysql> select "axe" REGEXP "pi|apa"; -> 0(表示不匹配)

mysql> select "apa" REGEXP "pi|apa"; -> 1(表示匹配)

mysql> select "apa" REGEXP "^(pi|apa)$"; -> 1(表示匹配)

mysql> select "pi" REGEXP "^(pi|apa)$"; -> 1(表示匹配)

mysql> select "pix" REGEXP "^(pi|apa)$"; -> 0(表示不匹配)

(abc)*

匹配任意多个abc(包括空串)

mysql> select "pi" REGEXP "^(pi)*$"; -> 1(表示匹配)

mysql> select "pip" REGEXP "^(pi)*$"; -> 0(表示不匹配)

mysql> select "pipi" REGEXP "^(pi)*$"; -> 1(表示匹配)

{1}

{2,3}

这是一个更全面的方法,它可以实现前面好几种保留字的功能

a*

可以写成a{0,}

a+

可以写成a{1,}

a?

可以写成a{0,1}

  在{}内只有一个整型参数i,表示字符只能出现i次;在{}内有一个整型参数i,后面跟一个“,”,表示字符可以出现i次或i次以上;在{}内只有一个整型参数i,后面跟一个“,”,再跟一个整型参数j,表示字符只能出现i次以上,j次以下(包括i次和j次)。其中的整型参数必须大于等于0,小于等于 RE_DUP_MAX(默认是255)。 如果有两个参数,第二个必须大于等于第一个

[a-dX]

匹配“a”、“b”、“c”、“d”或“X”

[^a-dX]

匹配除“a”、“b”、“c”、“d”、“X”以外的任何字符。

“[”、“]”必须成对使用

mysql> select "aXbc" REGEXP "[a-dXYZ]"; -> 1(表示匹配)

mysql> select "aXbc" REGEXP "^[a-dXYZ]$"; -> 0(表示不匹配)

mysql> select "aXbc" REGEXP "^[a-dXYZ]+$"; -> 1(表示匹配)

mysql> select "aXbc" REGEXP "^[^a-dXYZ]+$"; -> 0(表示不匹配)

mysql> select "gheis" REGEXP "^[^a-dXYZ]+$"; -> 1(表示匹配)

mysql> select "gheisa" REGEXP "^[^a-dXYZ]+$"; -> 0(表示不匹配)

[[.characters.]] 表示比较元素的顺序。在括号内的字符顺序是唯一的。但是括号中可以包含通配符,所以他能匹配更多的字符。举例来说:正则表达式[[.ch.]]*c匹配chchcc的前五个字符。

[=character_class=]

表示相等的类,可以代替类中其他相等的元素,包括它自己。例如,如果o和(+)是一个相等的类的成员,那么[[=o=]]、[[=(+)=]]和[o(+)]是完全等价的。

[:character_class:]

在括号里面,在[:和:]中间是字符类的名字,可以代表属于这个类的所有字符。字符类的名字有: alnum、digit、punct、alpha、graph、space、blank、lower、upper、cntrl、print和xdigit

mysql> select "justalnums" REGEXP "[[:alnum:]]+"; -> 1(表示匹配)

mysql> select "!!" REGEXP "[[:alnum:]]+"; -> 0(表示不匹配)

[[:<:]]

[[:>:]]

分别匹配一个单词开头和结尾的空的字符串,这个单词开头和结尾都不是包含在alnum中的字符也不能是下划线。

mysql> select "a word a" REGEXP "[[:<:]]word[[:>:]]"; -> 1(表示匹配)

mysql> select "a xword a" REGEXP "[[:<:]]word[[:>:]]"; -> 0(表示不匹配)

mysql> select "weeknights" REGEXP "^(wee|week)(knights|nights)$"; -> 1(表示匹配)

转载于:https://www.cnblogs.com/sherrys/archive/2006/11/01/546306.html

正则表达式收藏(四)之MySQL的正则相关推荐

  1. JavaSript正则表达式收藏

    本文前半部分转载自:http://www.cainiao8.com/web/js_note/js_regular_expression_blueidea.html#_Toc213927708 匹配结尾 ...

  2. js正则表达式(四):断言

    js正则表达式(四):断言 ?= 零宽先行断言,通俗地讲,后边是什么.可以理解为正则表达式中的条件语句. 例子:后盾人,后边是教程的加上链接 let str=`后盾人不断分享视频视频,学习后盾人教程提 ...

  3. 一起学习正则表达式(四)常见的4种匹配模式

    转载请注明出处:https://blog.csdn.net/kong_gu_you_lan/article/details/119101667 本文出自 容华谢后的博客 往期回顾: <一起学习正 ...

  4. MySQL数据库,从入门到精通:第四篇——MySQL中常用的运算符及其用法

    MySQl学习(MySQL数据库,从入门到精通:第四篇--MySQL中常用的运算符及其用法 第四篇_MySQL中常用的运算符及其用法运算符 1. 算术运算符 1.加法与减法运算符 2.乘法与除法运算符 ...

  5. 完美解答35K月薪的MySQL面试题(四)MySQL是如何加行锁的?

    四.MySQL是如何加行锁的? 1.RR隔离级别下的加锁机制 2.RC隔离级别下的加锁机制 间隙锁时为了解决幻读问题,在RC允许出现幻读现象所以RC隔离级别下行锁都加的是记录锁. 只有在外键约束检查( ...

  6. Mysql数据库(四)——mysql索引相关知识

    Mysql数据库(四)--mysql索引相关知识 一.索引的概念 二.索引的优缺点 1.优点 2.缺点 三.创建索引的原则 四.索引的分类和创建方法 1.普通索引 ①.直接创建索引 ②.修改表方式创建 ...

  7. 【开源组件】一份值得收藏的的 MySQL 规范

    转载自  [开源组件]一份值得收藏的的 MySQL 规范 数据命名规范 所有数据库对象名称必须使用小写字母并用下划线分割. 所有数据库对象名称禁止使用 MySQL 保留关键字(如果表名中包含关键字查询 ...

  8. js进阶正则表达式10-分组-多行匹配-正则对象的属性(小括号作用:分组,将小括号里面的东西看成一个整体,因为量词只对前一个字符有效)(多行匹配:m)(属性使用:reg.global)...

    js进阶正则表达式10-分组-多行匹配-正则对象的属性(小括号作用:分组,将小括号里面的东西看成一个整体,因为量词只对前一个字符有效)(多行匹配:m)(属性使用:reg.global) 一.总结 1. ...

  9. 第四模块MySQL数据库

    第四模块MySQL数据库 从今天开始,我们将进入系列课程的 第四模块 的学习,这个模块就是给大家讲解MySQL数据库. 以前,在开发程序时,我们会把很多的数据和信息存储到某个文件夹中的文件中,例如:u ...

  10. MySQL学习四:MySQL双主双从

    文章目录 一.MySQL双主双从配置开启二进制日志 二.[配置每一台MySQL服务器的配置文件my.cnf](https://blog.csdn.net/huiguo_/article/details ...

最新文章

  1. java 调用url_java程序中访问url接口
  2. MATLAB中多个一维数组的合并
  3. 2 个月的面试亲身经历告诉大家,如何进入 BAT 等大厂?
  4. Spring配置跨域请求
  5. 列表、元组、字典、集合的定义与操作
  6. 复化辛普森公式求二重积分matlab源码及例题
  7. 重新认识下科技核心目录吧!附容易发的期刊名单
  8. 吴恩达深度学习课程第二章第三周编程作业(pytorch实现)
  9. 以太网转串口方案总结
  10. PHP获取客户端IP的方法
  11. ESD静电二极管封装规格,详细介绍
  12. 深入贯彻落实 Activity 的四种启动模式
  13. C++使用Socks5协议进行代理上网(四)
  14. 《深入理解Java虚拟机》笔记04之垃圾收集算法
  15. Java程序设计 北京大学 2019冬期末测验
  16. 安防天下1——视频监控技术概述及相关基础了解
  17. 为何基于树的模型在表格型数据中能优于深度学习?
  18. 使用js与画布实现小型植物大战僵尸
  19. useImperativeHandle使用实例
  20. Coursera视频无法播放解决办法

热门文章

  1. java nextintln_Java对正则表达式的支持(二)
  2. 在串口通信开发中实现自动查找串口端口的方法
  3. epon matlab仿真,一种新型的EPON保护结构
  4. navicat premium 链接postgresql 无法加载表_POSTGRESQL 数据库结构体系 ||| 东来西去 三个角度看...
  5. linux内核mtd分区,linux-kernel – ubifs卷与mtd分区
  6. 机器学习实践:本地远程查看服务器训练TensorBoard
  7. vb.net机器学习-手写和本机数字识别-K均值和欧氏距离
  8. 【机器学习基础】一文归纳AI调参炼丹之法
  9. 【Python基础】4300 字Python列表使用总结,用心!
  10. Kaggle | Bengali 比赛总结(孟加拉字符分类 )