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

作者:数据分析师之家 时间:2024-01-14 21:51:35 

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 操作符来进行正则表达式匹配。根据正则表达式的规则,用来查询或者替换符合指定要求的内容。

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

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

标签:Mysql,正则表达式,Regexp
0
投稿

猜你喜欢

  • Mysql经典高逼格/命令行操作(速成)(推荐)

    2024-01-26 14:45:01
  • win2003 安装 sqlserver 2005的方法

    2024-01-21 23:46:22
  • 如何使用PHP中的字符串函数

    2024-05-11 10:01:59
  • Python安装xarray库读取.nc文件的详细步骤

    2023-10-15 11:59:37
  • django框架使用orm实现批量更新数据的方法

    2023-08-11 04:48:25
  • python requests.get带header

    2022-07-28 20:50:40
  • asp动态调用不同include文件方法

    2007-09-26 14:22:00
  • MSXML2家族探秘

    2008-03-03 12:35:00
  • MySQL模糊查询用法大全(正则、通配符、内置函数)

    2024-01-22 13:48:50
  • 归纳万恶IE6的HACK方法

    2010-02-04 17:17:00
  • 在不能中寻找可能 QZONE个性相册设计的始末

    2009-07-13 12:27:00
  • 简单谈谈MySQL5.7 JSON格式检索

    2024-01-22 09:07:03
  • Pyinstaller+Pipenv打包Python文件的实现示例

    2021-06-11 01:49:51
  • Python中音频处理库pydub的使用教程

    2023-07-15 20:22:54
  • go-cache的基本使用场景示例解析

    2023-08-06 00:52:02
  • 基于python实现上传文件到OSS代码实例

    2022-12-14 16:45:17
  • Python Web框架Flask信号机制(signals)介绍

    2022-12-01 13:52:23
  • 在Python的gevent框架下执行异步的Solr查询的教程

    2022-12-29 11:26:49
  • 详解Python文件修改的两种方式

    2023-03-14 13:44:13
  • 通用的下拉菜单__用DL\\DD\\DT解决无法遮住select的问题

    2008-07-28 13:28:00
  • asp之家 网络编程 m.aspxhome.com