Mysql中正则表达式Regexp常见用法及说明

目录
  • Mysql中Regexp常见用法
  • Regexp关键字及正则表达式的常用通配符
  • 总结

Mysql中Regexp常见用法

模糊匹配,包含特定字符串

# 查找content字段中包含“车友俱乐部”的记录
select * from club_content where content regexp '车友俱乐部'

# 此时的regexp与like的以下用法是等同的
select * from club_content where content like '%车友俱乐部%'

模糊匹配,以特定字符串开头

# 查找content字段中以“车友”开头的记录
select * from club_content where content regexp '^车友'

# 此时的regexp与like的以下用法是等同的
select * from club_content where content like '车友%'

模糊匹配,以特定字符串结尾

# 查找content字段中以“车友”结尾的记录
select * from club_content where content regexp '车友$'

# 此时的regexp与like的以下用法是等同的
select * from club_content where content like '%车友'

模糊匹配,或关系

# 查找content字段中包含“心得”、“分享”或“技术贴”
select * from club_content where content  REGEXP '心得|分享|技术贴'

模糊匹配,不包含单个字符

# 查找content字段中不包含“车”字、“友”字的记录
select * from club_content where content  REGEXP [^车友]

这个结果跑出来一看大吃一惊,竟然把所有记录给跑出来,这是为什么呢?

因为一旦加了这个方括号"[]",它就把里面的内容拆成单个的字符再匹配,它会逐个字符去匹配判断是不是等于“车”,或者是不是等于“友“,返回的结果是一组0、1的逻辑值。

如果想匹配不包含特定字符串,该怎么实现呢?

模糊匹配,不包含特定字符串

# 查找content字段不包含“车友”字符串的记录
select * from club_content where content not REGEXP '车友'

Regexp关键字及正则表达式的常用通配符

在Mysql中使用Regexp关键字来指定正则表达式的匹配内容。

语法:

字段 regexp ‘匹配字符’;

MySQL中使用 REGEXP 操作符来进行正则表达式匹配。根据正则表达式的规则,用来查询或者替换符合指定要求的内容。

–select <字段> from 表 where <字段> REGEXP '通配符/字符';

通配符 说明 例子
^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 ‘\n’ 或 ‘\r’ 之后的位置 '^b’匹配以字母 b 开头的字符串
$ 匹配文本的结束字符,如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 ‘\n’ 或 ‘\r’ 之后的位置 ‘st$’ 匹配以 st 结尾的字符串
. 匹配除 “\n” 之外的任何单个字符。要匹配包括 ‘\n’ 在内的任何字符,请使用像 ‘[.\n]’ 的模式。 ‘b.t’ 匹配任何 b 和 t 之间有一个字符
| 或,多匹配符链接 ‘z|food’ 能匹配 “z” 或 “food”。’(z|f)ood’ 则匹配 “zood” 或 “food”。
* 匹配零个或多个在它前面的字符 zo* 能匹配 “z” 以及 “zoo”。* 等价于{0,}
+ 匹配前面的字符/子表达式 1 次或多次 ‘ba+’ 匹配以 b 开头,后面至少紧跟一个 a;‘zo+’ 能匹配 “zo” 以及 “zoo”,但不能匹配 “z”。+ 等价于 {1,}。
<字符串> 匹配包含指定字符的文本 ‘fa’ 匹配包含‘fa’的文本
[字符集合] 匹配字符集合中的任何一个字符 ‘[ar]’ 匹配 a 或者 r。
[^] 负值字符集合; 匹配不包含在括号中的任何字符 ‘[^abc]’ 匹配任何不包含 a、b 或 c 的字符串
字符串{n,} n 是一个非负整数.匹配前面的字符串n 次 ‘e{2}’ 匹配 2 个或多个的 e, 例如:feed
字符串 {n,m} m 和 n 均为非负整数,其中n <= m。匹配前面的字符串 n至 m 次 ‘b{2,4}’ 匹配最少 2 个,最多 4 个,例如baby

示例:

#匹配符合要求的多个字符/字符串
--字符*和+都可以匹配多个该符号之前的字符。不同的是,,而*可以表示 0 个字符。
'--select <字段> from 表 where   <字段> REGEXP  '字符1+'; '--+结果匹配‘字符1'一次或多次
--select <字段> from 表 where   <字段> REGEXP  '^字符1*'; --匹配‘字符1' 0次或多次
#匹配指定的字符/字符串,需要匹配多个的场合,使用‘|'分号隔开。
'--select <字段> from 表 where   <字段> REGEXP  '字符1|字符2|字符3*';
#查询以特定字符或字符串开头的数据
'--select <字段> from 表 where   <字段> REGEXP  '^字符';
#匹配指定字符以外的字符
'--select <字段> from 表 where   <字段> REGEXP  '[^字符1~字符3]*';
#查询以特定字符或字符串结尾的数据
'--select <字段> from 表 where   <字段> REGEXP  '字符$';
#替代字符串中的任意一个字符,例如:a.b =acb,adb
'--select <字段> from 表 where   <字段> REGEXP  '字符1.字符2';
'#查询可以匹配指定字符串中的任意一个字符的字符串
'--select <字段> from 表 where   <字段> REGEXP  '[字符1字符2字符3]*';
'#查询陪陪指定集合的区间内容的数据
#[a-z]”表示从 a~z 的所有字母;“[0-9]”表示从 0~9 的所有数字;
“[a-z0-9]”表示包含所有的小写字母和数字;“[a-zA-Z]”表示匹配所有字符。
'--select <字段> from 表 where   <字段> REGEXP  '[字符1~字符3]*';
#使用{n,}或者{n,m}来指定字符串连续出现的次数
'--select <字段> from 表 where   <字段> REGEXP  '匹配的字符{匹配次数,}*';
例: --billy,silaly,tilly
'--select  name from  namestd where name  regexp 'l{2,};
'--select <字段> from 表 where   <字段> REGEXP  '匹配的字符{匹配次数1,匹配次数2}';
'例:--LiMing,Lily,LiPingPing  匹配字母“i” 一至三次
'--select  name from  namestd where name  regexp 'i{1,3}; 

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • MySQL中REGEXP正则表达式使用大全

    以前我要查找数据都是使用like后来发现mysql中也有正则表达式了并且感觉性能要好于like,下面我来给大家分享一下mysql REGEXP正则表达式使用详解,希望此方法对大家有帮助. MySQL采用Henry Spencer的正则表达式实施,其目标是符合POSIX 1003.2.请参见附录C:感谢.MySQL采用了扩展的版本,以支持在SQL语句中与REGEXP操作符一起使用的模式匹配操作.请参见3.3.4.7节,"模式匹配". 在本附录中,归纳了在MySQL中可用于REGEXP操作

  • Mysql中正则表达式Regexp常见用法

    Mysql中Regexp常见用法 模糊匹配,包含特定字符串 # 查找content字段中包含"车友俱乐部"的记录 select * from club_content where content regexp '车友俱乐部' # 此时的regexp与like的以下用法是等同的 select * from club_content where content like '%车友俱乐部%' 模糊匹配,以特定字符串开头 # 查找content字段中以"车友"开头的记录 s

  • MySQL正则表达式REGEXP使用详解

    目录 LIKE 和 REGEXP之间的重要差别 正则表达式匹配不区分大小写 简单的正则表达式测试 空白元字符(特殊含义的字符) 匹配字符类 正则表达式支持的其它语法约定 正则表达式断言 语法实例 总结 正则表达式用来匹配文本的特殊的串(字符集合)(匹配文本,将一个模式(正则表达式)与一个文本串进行比较). LIKE 和 REGEXP之间的重要差别 LIKE 匹配整个列,如果被匹配的文本在列值中出现,LIKE 将不会找到它,相应的行也不会被返回(除非使用通配符).而 REGEXP 在列值内进行匹配

  • MySQL正则表达式regexp_replace函数的用法实例

    目录 用法 参数 用法 总结 注:此函数为 MySQL8.0 版本新增,低于8.0版本没有此函数. regexp_replace(expr, pat, repl[, pos[, occurrence[, match_type]]]) 用法 将字符串expr与pat指定的正则表达式匹配的匹配项,替换为字符串repl,并返回结果字符串.如果expr.pat或repl为NULL,则返回值为NULL. 参数 expr:要替换的原始字符串,或者数据库表指定的列. pat:要匹配的正则表达式,pat为空串时

  • MySQL中使用replace、regexp进行正则表达式替换的用法分析

    本文实例讲述了MySQL中使用replace.regexp进行正则表达式替换的用法.分享给大家供大家参考,具体如下: 今天一个朋友问我,如果将数据库中查到的类似于"./uploads/110100_cityHotel_北京富豪华宾馆.jpg"这样的格式都修改为"./uploads/110100cityHotel北京富豪华宾馆.jpg"这样的格式.我本人是没有这样处理过数据的,但是我知道mysql是可以使用replace做到的,而且正则表达式也可以做到. 如何做呢?

  • mysql正则表达式(regexp和rlike)的搜索功能实例分析

    本文实例讲述了mysql正则表达式(regexp和rlike)的搜索功能.分享给大家供大家参考,具体如下: 我们知道正则表达式是描述搜索模式的特殊字符串. 它是一个强大的工具,为我们提供一种简洁灵活的方法来识别基于模式的文本字符,例如字符,单词等.例如,我们可以使用正则表达式来搜索电子邮件,IP地址,电话号码,社会安全号码或具有特定模式的任何内容.正则表达式可以由正则表达式处理器解释的自己的语法,正则表达式广泛应用于从编程语言到数据库(包括MySQL)大部分平台.使用正则表达式的优点是,不限于在

  • MySQL中正则表达式(REGEXP)使用详解

    目录 前言 LIKE和REGEXP的区别 OR进行匹配 匹配范围 匹配特殊字符 匹配字符类 匹配多个实例 定位符 ^有两种用法 附:Mysql字符串截取 和 截取字符进行查询 总结 前言 有时候使用MySQL进行数据库查询数据的时候,like查询存在局限性,这时候就可以使用MySQL中的正则表达式查询的方式. 正则表达式是用来匹配文本的特殊的串(字符集合),将一个模式(正则表达式)与一个文本串进行比较. 从文本文件中提取电话号码 查找名字中间带有数字的文件 文本块中重复出现的单词 替换页面的UR

  • Mysql中正则表达式Regexp常见用法及说明

    目录 Mysql中Regexp常见用法 Regexp关键字及正则表达式的常用通配符 总结 Mysql中Regexp常见用法 模糊匹配,包含特定字符串 # 查找content字段中包含"车友俱乐部"的记录 select * from club_content where content regexp '车友俱乐部' # 此时的regexp与like的以下用法是等同的 select * from club_content where content like '%车友俱乐部%' 模糊匹配,

  • MySQL中ESCAPE关键字的用法详解

    MySQL转义 转义即表示转义字符原来的语义,一个转义字符的目的是开始一个字符序列,使得转义字符开头的该字符序列具有不同于该字符序列单独出现时的语义. MySQL中,转义字符以"\"开头,编程中常见的转义字符,在MySQL均是有效的,在此不做赘述和讨论.在此,主要通过"%" 和 "_"来对ESCAPE关键字的作用进行说明. %:匹配任意多个字符. _:匹配单一字符. 如果我们要匹配"%"或者"_"时,就必须

  • MySQL中Like概念及用法讲解

    Like中文解释为喜欢的意思,但当应用于MySQL数据库中,Like则是一种语句,用于模糊查询,主要是针对字符型字段的,在一个字符型字段列中检索包含对应子串的.本文向大家介绍MySQL中Like语句. 一.Like是什么意思 1.Like算作MySQL中的谓词,其应用与is.=.>和<等符号用法类似. 2.在sql结构化查询语言中,like语句有着至关重要的作用. 3.从某种意义上讲,Like可看作是一个精简的正则表达式功能. 二.Like作用 like语句的语法格式是 select * fr

  • MySQL中几种常见的嵌套查询详解

    目录 几种常见的嵌套查询——以学员成绩为例 含ANY或ALL关键词的嵌套查询 含IN关键词的嵌套查询 含EXISTS关键词的嵌套查询 [补充]关于IN和EXISTS两个关键词还有两个延伸关键词NOT IN和NOT EXISTS 附:其他使用方法和注意 总结 几种常见的嵌套查询——以学员成绩为例 嵌套查询,也称为子查询,是实际工作中经常用到的一种查询方式.子查询其实就是在已有的查询语句中的where后面再嵌套一层查询语句,也就是把内层查询结果当做外层查询参照的数据表来使用. 在工作中,经常会遇见4

  • Android编程开发中ListView的常见用法分析

    本文实例讲述了Android编程开发中ListView的常见用法.分享给大家供大家参考,具体如下: 一.ListView的使用步骤 ListView的使用通常有以下三个要素: (1)ListView中每个条目的布局; (2)填充进入ListView中的内容; (3)将内容与页面进行整合的Adapter. 因此,使用ListView也通常有以下三个步骤: (1)创建ListView条目的布局文件(或使用Android SDK提供的布局); (2)创建填充进入ListView中的内容,如字符串.图片

  • Python中numpy模块常见用法demo实例小结

    本文实例总结了Python中numpy模块常见用法.分享给大家供大家参考,具体如下: import numpy as np arr = np.array([[1,2,3], [2,3,4]]) print(arr) print(type(arr)) print('number of dim:', arr.ndim) print('shape:', arr.shape) print('size:', arr.size) [[1 2 3]  [2 3 4]] number of dim: 2 sha

  • MySQL中USING 和 HAVING 用法实例简析

    本文实例讲述了MySQL中USING 和 HAVING 用法.分享给大家供大家参考,具体如下: USING 用于表连接时给定连接条件(可以理解为简写形式),如 SELECT * FROM table1 JOIN table2 ON table1.id = table2.id 使用 USING 可以写为 SELECT * FROM table1 JOIN table2 USING(id) HAVING 引入 HAVING 是因为 WHERE 无法和统计函数一起使用 如表 order (定单)有如下

  • python中正则表达式 re.findall 用法

    Python 正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. re 模块使 Python 语言拥有全部的正则表达式功能. compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象.该对象拥有一系列方法用于正则表达式匹配和替换. re 模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数. 本文主要给大家介绍

随机推荐