Mysql中正则表达式Regexp常见用法及说明
作者:数据分析师之家 发布时间:2024-01-14 21:51:35
标签:Mysql,正则表达式,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};
来源:https://blog.csdn.net/fwj_ntu/article/details/82896169
0
投稿
猜你喜欢
- 作用域链首先来看看这段代码:var a = '喜羊羊';function A(){ console
- Python Flask项目中获取请求用户IP地址 addr服务器直接部署Flaskimport loggingfrom flask imp
- pycharm创建sql文件及模板创建模板pycharm默认新建文件选项中没有sql文件,每次通过文件末尾添加.sql识别文件格式很麻烦。可
- <script type="text/javascript"> </script>
- oracle数据库的权限系统分为系统权限与对象权限。系统权限( database system privilege )可以让用户执行特定的命
- 静态文件配置概述:静态文件交由Web服务器处理,Django本身不处理静态文件。简单的处理逻辑如下(以nginx为例):URI请求 --&g
- 本文实例为大家分享了Python OpenCV图像直方图和反向投影的具体代码,供大家参考,具体内容如下当我们想比较两张图片相似度的时候,可以
- 用Open() 函数打开文件打开文件的常用方法是:open(FH, "< $filename") &nb
- 一、正常配置stylus流程1.安装stylus、stylus-loader依赖(进入项目文件夹下)cnpm install stylus
- 时间序列预测时间序列是按照时间顺序排列的数据集合,在很多应用中都非常常见。时间序列分析是对这些数据进行分析和预测的过程。时间序列预测是该分析
- 本文实例讲述了GO语言实现简单TCP服务的方法。分享给大家供大家参考。具体实现方法如下:package mainimport ("
- 所谓取模运算,就是计算两个数相除之后的余数,符号是%。如a % b就是计算a除以b的余数。用数学语言来描述,就是如果存在整数n和m,其中0
- 凯撒密码介绍凯撒密码是一种非常古老的加密方法,相传当年凯撒大地行军打仗时为了保证自己的命令不被敌军知道,就使用这种特殊的方法进行通信,以确保
- 本文实例介绍了asp对access数据库常见操作方法,查找记录,添加记录更新记录,删除记录等。一、查找记录find.htm<HTML&
- 在本节中,您将创建一个新的MoviesController类,并在这个Controller类里编写代码来取得电影数据,并使用视图模板将数据展
- 以查询前20到30条为例,主键名为id 方法一: 先正查,再反查 select top 10 * from (select top 30 *
- 一:手写数字模型构建与保存1 加载数据集# 1加载数据digits_data = load_digits()可以先简单查看下 手写数字集,如
- 用过MySQL之后,不论容量的话,发现比其他两个(sql server 、oracle)好用的多,一下子就喜欢上了。下面给那些还不知道怎么弄
- 记得很早以前看到过这样的一段介绍:想象你在逛街边的一家书店,如果最终你没有购买任何图书就直接离开了,店长并不会知道你来过。但是如果你买了书,
- 本文实例为大家分享了python使用正则筛选信用卡的具体代码,供大家参考,具体内容如下本文来源于两个简单的题目:1.判断一对单词是否是&qu