MySql正则表达式简介及使用

by:授客 QQ1033553122

简介

正则表达式描述了一组字符串,该字符放置于REGEXP工具后面。作用是将一个正则表达式与一个文本串进行比较。

最简单的正则表达式是不含任何特殊字符的正则表达式。

例如,正则表达式hello匹配hello。

非普通的正则表达式采用了特殊的特定结构,从而使得它们能够与1个以上的字符串匹配。

例如,正则表达式hello|word匹配字符串hello或字符串word。

实例

#正则表达式^,查找以指定字符串开头的语句

#eg:找出以start字符串开头的语句

select 'start' regexp '^start'; #结果 1 表示匹配到

SELECT 'start\nsrart' REGEXP '^srart$'; #结果0 表示没匹配到

#正则表达式$,查找以指定字符串结尾的语句

#eg:找出以end字符串结尾的语句

select 'wordsend' regexp 'end$'; #结果 1 表示匹配到

select 'wordsend\r' regexp 'end$'; #结果 0 表示没匹配到

#正则表达式*

注意:单独一个*是非法的,要看*前面的符号,如果是 . 就可以匹配任意字符(包括回车和新行)

#eg:匹配任意字符,以新行(\n)或回车(\r)结尾

select 'anbny\n' regexp '^a.*$'; #结果 1 表示匹配到

select 'anfyn\r' regexp '^a.*$'; #结果 1 表示匹配到

#正则表达式x*x为任意字符,查找包含0或多个x字符的语句

#eg:查找包含0或多个a字符的语句

select 'andkdkd' regexp 'a*'; #结果 1 表示匹配到

select 'aaaaaaadkdkd' regexp 'a*'; #结果 1 表示匹配到

select 'nmnnkdkd' regexp 'a*'; #结果 1 表示匹配到

#正则表达式x+x为任意字符,查找包含至少一个x字符的语句

#eg:查找包含至少一个a字符的语句

select 'akkdkdkd' regexp 'a+'; #结果 1 表示匹配到

select 'aaaaakdkdkdk' regexp 'a+'; #结果 1 表示匹配到

select 'kdkdkdld' regexp 'a+'; #结果 0 表示没匹配到

#正则表达式x?,x为任意字符,查找包含一个或0X字符的语句

select 'akdkdkdk' regexp 'a?'; #结果 1 表示匹配到

select 'kdkdkdkdk' regexp 'a?'; #结果 1 表示匹配到0个

select 'kaakkk' regexp '^ka?k'; #结果 0 应该匹配kak或kk

#正则表达式 字符串1|字符串2,查找包含字符串1或字符串2的语句,注意|前后不要有空格

select 'xxa' regexp 'xxa|pkdkd'; #结果 1 表示匹配到

select 'pkdkd' regexp 'xxa|pkdkd'; #结果 1 表示匹配到

select 'xxapkdkd' regexp 'xxa|pkdkd'; #结果 1 表示匹配到

select 'xxdkd' regexp 'xxa|pkdkd';  #结果 0 表示无匹配到

#正则表达式 (abc)*,查找包含任意多个abc语句(包括空串)

#eg

select 'axkd' regexp '(xk)*'; #结果1 表示匹配到

select 'akd' regexp '(xd)*'; #结果1 匹配到0个

select 'xdxd' regexp '(xd)*'; #结果是1

#正则表达式 {n}{m,n}mn均为整数

#a*可以写成 a{0,} a+可以写成a{1,} a?可被写入为a{0,1}

#更准确地讲,a{n}与a的n个实例准确匹配。a{n,}匹配a的n个或更多实例。a{m,n}匹配a的m~n个实例,包含m和n。

#m和n必须位于0~RE_DUP_MAX(默认为255)的范围内,包含0和RE_DUP_MAX。如果同时给定了m和n,m必须小于或等于n。

#eg:

SELECT 'abcde' REGEXP 'a[bcd]{2}e'; #结果为0 abe ace ade 不能满足

SELECT 'abcde' REGEXP 'a[bcd]{1}e'; #结果为0 同上

SELECT 'abcde' REGEXP 'abcd{1}e'; #结果为1 abcd 匹配到一个

SELECT 'abcde' regexp 'ab{1,}'; #结果为1 ab 匹配到一个

SELECT 'abcde' regexp 'ab{2,}'; #结果为0 ab 只匹配到一个,不能满足2

SELECT 'abcde' regexp 'a[bcd]{1,10}e'; #结果为1  ?好晕,不清楚啥情况

SELECT 'abcde' regexp 'a[bcd]{3,10}e'; #结果为1  ?好晕,不清楚啥情况

SELECT 'abcde' regexp 'a[bcd]{4,10}e'; #结果为0  ?好晕,不清楚啥情况

#正则表达式[a-dX], [^a-dX]

#匹配任何是(或不是,如果使用^的话)a、b、c、d或X的字符。

#两个其他字符之间的“-”字符构成一个范围,与从第1个字符开始到第2个字符之间的所有字符匹配。

#例如,[0-9]匹配任何十进制数字。要想包含文字字符“]”,它必须紧跟在开括号“[”之后。要想包含文字字符“-”,

#它必须首先或最后写入。对于[]对内未定义任何特殊含义的任何字符,仅与其本身匹配。

#eg:

SELECT 'aXbc' regexp '[a-dXYZ]'; #结果是1

SELECT 'aXbc' REGEXP '^[a-dXYZ]$'; #结果是0

SELECT 'aXbc' REGEXP '^[a-dXYZ]+$';#结果是1

SELECT 'aXbc' REGEXP '^[^a-dXYZ]+$'; #结果是0

SELECT 'gheis' REGEXP '^[^a-dXYZ]+$'; #结果是1

SELECT 'gheisa' REGEXP '^[^a-dXYZ]+$'; #结果是0

#正则表达式[.characters.]

#在括号表达式中(使用[.]),匹配用于校对元素的字符序列。字符为单个字符或诸如新行等字符名。在文件regexp/cname.h中,可找到字符名称的完整列表。

SELECT '~' REGEXP '[[.~.]]'; #结果是1

SELECT '~' REGEXP '[.~.]'; #结果是1

SELECT '~' REGEXP '[[.tilde.]]';  #结果是1  ??

SELECT '~' REGEXP '[[.titlde.]]'; #结果是0

#正则表达式[=character_class=]

#在括号表达式中(使用[和]),[=character_class=]表示等同类。它与具有相同校对值的所有字符匹配,包括它本身,

#例如,如果o和(+)均是等同类的成员,那么[[=o=]]、[[=(+)=]]和[o(+)]是同义词。等同类不得用作范围的端点。

#正则表达式 [:character_class:],在括号表达式中(使用[和]),[:character_class:]表示与术语类的所有字符匹配的字符类。标准的类名称是

# alnum  文字数字字符

# alpha  文字字符

# blank  空白字符

# cntrl  控制字符

# digit  数字字符

# graph  图形字符

# lower  小写文字字符

# print  图形或空格字符

# punct  标点字符

# space  空格、制表符、新行、和回车

# upper  大写文字字符

# xdigit 十六进制数字字符

#它们代表在ctype(3)手册页面中定义的字符类。特定地区可能会提供其他类名。字符类不得用作范围的端点。

SELECT 'justalnums' REGEXP '[[:alnum:]]+';    #结果是1

SELECT '!!' REGEXP '[[:alnum:]]+';            #结果是0

SELECT 'justalnums' REGEXP '[=alnum=]+';  #结果是1

SELECT '567' REGEXP '[=alpha=]+';  #结果是0

#正则表达式[[:<:]], [[:>:]] 这些标记表示word边界。它们分别与word的开始和结束匹配。

#word是一系列字字符,其前面和后面均没有字字符。字字符是alnum类中的字母数字字符或下划线(_)。

SELECT 'a word a' REGEXP '[[:<:]]word[[:>:]]';   #结果是1

SELECT 'a xword a' REGEXP '[[:<:]]word[[:>:]]';  #结果是0

#要想在正则表达式中使用特殊字符的文字实例,应在其前面加上2个反斜杠“\”字符。

#MySQL解析程序负责解释其中一个,正则表达式库负责解释另一个。

#例如,要想与包含特殊字符“+”的字符串“1+2”匹配,在下面的正则表达式中,只有最后一个是正确的:

SELECT '1+2' REGEXP '1+2';      #结果是0

SELECT '1+2' REGEXP '1\+2';     #结果是0

SELECT '1+2' REGEXP '1\\+2';    #结果是1

MySql 正则表达式简介及使用的更多相关文章

  1. php正则表达式简介

    正则表达式简介 正则表达式Regular Expression,使用单个字符串来描述.匹配一系列符合某个句法规则的字符串.代表性书籍<正则表达式之道>里面有详细论述,本书籍为个人查阅之用力 ...

  2. 【转】正则表达式简介及在C++11中的简单使用教程

    正则表达式Regex(regular expression)是一种强大的描述字符序列的工具.在许多语言中都存在着正则表达式,C++11中也将正则表达式纳入了新标准的一部分,不仅如此,它还支持了6种不同 ...

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

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

  4. mysql正则表达式及应用

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

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

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

  6. MySQL日志简介

    一.MySQL日志简介 二.错误日志 作用: 记录mysql数据库的一般状态信息及报错信息,是我们对于数据库常规报错处理的常用日志. 默认位置: $MYSQL_HOME/data/ 开启方式:(MyS ...

  7. 数据库----ORACLE和MYSQL数据库简介

    一.什么是数据库? 数据库(Database---DB)按照组织.储存和管理数据的仓库.(理解以下三个概念)   数据(Data)用来描述事物的记录都可称数据,如文字音乐图像.   数据库系统(Dat ...

  8. MySQL 正则表达式

    介绍 正则表达式用来描述或者匹配符合规则的字符串.它的用法和like比较相似,但是它又比like更强大,能够实现一些很特殊的规则匹配:正则表达式需要使用REGEXP命令,匹配上返回"1&qu ...

  9. MySQL正则表达式

    正则表达式作用是匹配方本,将一个模式(正则表达式)与一个文本串进行比较. MySQL用WHERE子句对正则表达式提供了初步的支持,允许你指定用正则表达式过滤SELECT检索出的数据. MySQL仅支持 ...

随机推荐

  1. 课程二(Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization),第二周(Optimization algorithms) —— 2.Programming assignments:Optimization

    Optimization Welcome to the optimization's programming assignment of the hyper-parameters tuning spe ...

  2. 开机自启动Nginx的脚本

    1.1 编写shell脚本 这里使用的是编写shell脚本的方式来处理 vi /etc/init.d/nginx  (输入下面的代码) #!/bin/bash # nginx Startup scri ...

  3. (转)Python3之shutil模块

    原文:https://www.cnblogs.com/wang-yc/p/5625046.html 一. 简介 shutil 是高级的文件,文件夹,压缩包处理模块. 二. 使用 shutil.copy ...

  4. Git学习系列之CentOS上安装Git详细步骤(图文详解)

    前言 最早Git是在Linux上开发的,很长一段时间内,Git也只能在Linux和Unix系统上跑.不过,慢慢地有人把它移植到了Windows上.现在,Git可以在Linux.Unix.Mac和Win ...

  5. 计数排序/Counting Sort

    计数排序的算法思想: 对于每一个元素x,只要确定了元素x有多少个比它小的元素,那么就可以知道其最终的位置. 记输入数组为A[n],存放最后排序输出的数组为B[n],提供临时存储空间的中间数组记为C[k ...

  6. PHP之高性能I/O框架:Libevent(二)

    Event扩展 Event可以认为是替代libevent最好的扩展,因为libevent已经很久不更新了,而Event一直在更新,而且Event支持更多特性,使用起来也比libevent简单. Eve ...

  7. js拦截全局ajax请求

    你是否有过下面的需求:需要给所有ajax请求添加统一签名.需要统计某个接口被请求的次数.需要限制http请求的方法必须为get或post.需要分析别人网络协议等等,那么如何做?想想,如果能够拦截所有a ...

  8. Prim Algoritm(最小生成树)

    Prim Algorithm.这个算法可以分为下面几个步骤: 将顶点集V分成两个集合A和B,其中集合A表示目前已经在MST中的顶点,而集合B则表示目前不在MST中的顶点. 在B寻找与集合A连通的最短的 ...

  9. Ceph 块设备 - 块设备快速入门

    目录 一.准备工作 二.安装 Ceph 三.使用块存储   一.准备工作 本文描述如何安装 ceph 客户端,使用 Ceph 块设备 创建文件系统并挂载使用. 必须先完成 ceph 存储集群的搭建,并 ...

  10. VMware ESX常用命令

    一. VMware ESX Command 1. 看你的esx版本 vmware –v 2. 查看显示ESX硬件,内核,存储,网络等信息 esxcfg-info -a(显示所有相关的信息) esxcf ...