python mysql 正则表达式,MySQL之正则表达式(REGEXP)

MySQL中正则表达式通常被用来检索或替换符合某个模式的文本内容,根据指定的匹配模式匹配文中符合要求的特殊字符串。

例如,从一个文件中提取电话号码,查找一篇文章中重复的单词或替换用户输入的敏感语汇等,这些地方都可以使用正则表达式。正则表达式强大而且灵活,常用于复杂的查询。

MySQL 中使用 REGEXP 关键字指定正则表达式的字符匹配模式,下表列出了 REGEXP 操作符中常用的匹配列表。

选项

说明

例子

匹配值示例

^

匹配文本的开始字符

'^b' 匹配以字母 b 开头 的字符串

book、big、banana、 bike

$

匹配文本的结束字符

'st$’ 匹配以 st 结尾的字 符串

test、resist、persist

.

匹配任何单个字符

'b.t’ 匹配任何 b 和 t 之间有一个字符

bit、bat、but、bite

*

匹配零个或多个在它前面的字 符

'f*n’ 匹配字符 n 前面有 任意个字符 f

fn、fan、faan、abcn

+

匹配前面的字符 1 次或多次

'ba+’ 匹配以 b 开头,后 面至少紧跟一个 a

ba、bay、bare、battle

匹配包含指定字符的文本

'fa’

fan、afa、faad

[字符集合]

匹配字符集合中的任何一个字 符

'[xz]'匹配 x 或者 z

dizzy、zebra、x-ray、 extra

[^]

匹配不在括号中的任何字符

'[^abc]’ 匹配任何不包 含 a、b 或 c 的字符串

desk、fox、f8ke

字符串{n,}

匹配前面的字符串至少 n 次

b{2} 匹配 2 个或更多 的 b

bbb、 bbbb、 bbbbbbb

字符串

{n,m}

匹配前面的字符串至少 n 次, 至多 m 次

b{2,4} 匹配最少 2 个, 最多 4 个 b

bbb、 bbbb

查询以特定字符或字符串开头的记录

字符“^”匹配以特定字符或者字符串开头的文本。

【实例 1】在 tb_departments 表中,查询 dept_name 字段以字母“C”开头的记录,输入的 SQL 语句和执行结果如下所示。

tb_departments表原始查询如下:

4f5969996ee415f66dd185f2236fce46.png

正则表达查询如下:

d99aa741ae48ac487c9d80be9231959f.png

【实例 2】在 tb_departments 表中,查询 dept_name 字段以“Ch”开头的记录,输入的 SQL 语句和执行结果如下所示。

6d4da0ea8ed16e7640a102af87db36ee.png

只有 Chinese 是以“Ch”开头的,所以查询结果中只有 1 条记录。

查询以特定字符或字符串结尾的记录

字符“$”匹配以特定字符或者字符串结尾的文本。

【实例 3】在 tb_departments 表中,查询 dept_name 字段以字母“y”结尾的记录,输入的 SQL 语句和执行结果如下所示。

d62f949110cc6a0e80afa2b58bd8059c.png

在 tb_departments 表中有两条记录的 dept_name 字段值是以字母 y 结尾的,返回结果有 2 条记录。

【实例 4】在 tb_departments 表中,查询 dept_name 字段以“my”结尾的记录,输入的 SQL 语句和执行结果如下所示。

a53390989f7e2f069303d50069688cfe.png

只有 Economy 是以“my”结尾的,所以查询结果中只有 1 条记录。

用符号“.”代替字符串中的任意一个字符

【实例 5】在 tb_departments 表中,查询 dept_name 字段值包含字母“o”与字母“y”,且两个字母之间只有一个字母的记录,输入的 SQL 语句和执行结果如下所示。

a00ec32bad19ed744d14ab0d90c22d25.png

查询语句中“o.y”指定匹配字符中要有字母 o 和 y,且两个字母之间包含单个字符,并不限定匹配的字符的位置和所在查询字符串的总长度,因此 Economy 和 History 都符合匹配条件。

使用“*”和“+”来匹配多个字符

星号“*”匹配前面的字符任意多次,包括 0 次。加号“+”匹配前面的字符至少一次。

【实例 6】在 tb_departments 表中,查询 dept_name 字段值包含字母“C”,且“C”后面出现字母“h”的记录,输入的 SQL 语句和执行结果如下所示。

4c015412b1ae0e0a61de10a9d7b824d9.png

星号“*”可以匹配任意多个字符,Computer 、Economy、Music中字母 C(MySQL默认不区分大小写,所以查询条件中的写的'C',但是结果中会包含出现大写'C'和小写'c'的结果) 后面并没有出现字母 h,但是也满足匹配条件。

【实例 7】在 tb_departments 表中,查询 dept_name 字段值包含字母“C”,且“C”后面出现字母“h”至少一次的记录,输入的 SQL 语句和执行结果如下所示。

b063b5a36b81489b6801e8801c8a1c6c.png

h+”匹配字母“h”至少一次,只有 Chinese 满足匹配条件。

匹配指定字符串

正则表达式可以匹配指定字符串,只要这个字符串在查询文本中即可,若要匹配多个字符串,则多个字符串之间使用分隔符“|”隔开。

【实例 8】在 tb_departments 表中,查询 dept_name 字段值包含字符串“in”的记录,输入的 SQL 语句和执行结果如下所示。

6662167add4d7f6712d176970ffb25c6.png

可以看到,dept_name 字段的 Chinese 中包含字符串“in”,满足匹配条件。

【实例 9】在 tb_departments 表中,查询 dept_name 字段值包含字符串“in”或者“on”的记录,输入的 SQL 语句和执行结果如下所示。

fdfc97fc01b4d51868a82406480ef5ce.png

可以看到,dept_name 字段的 Chinese 中包含字符串“in”,Economy 中包含字符串“on”,满足匹配条件。

提示:LIKE 运算符也可以匹配指定的字符串,但与 REGEXP 不同,LIKE 匹配的字符串如果在文本中间出现,就找不到它,相应的行也不会返回。而 REGEXP 在文本内进行匹配,如果被匹配的字符串在文本中出现,REGEXP 将会找到它,相应的行也会被返回。

匹配指定字符串中的任意一个

方括号“[]”指定一个字符集合,只匹配其中任何一个字符,即为所查找的文本。

【实例 10】在 tb_departments 表中,查询 dept_name 字段值包含字母“o”或者“e”的记录,输入的 SQL 语句和执行结果如下所示。

b89b6f36c9e236b50c093e2b887bfc40.png

1169581ecdf14acd6ac063767a8e7128.png

从查询结果可以看到,所有返回的记录的 dept_name 字段的值中都包含字母 o 或者 e,或者两个都有。

方括号“[]”还可以指定数值集合。

【实例 11】在 tb_departments 表中,查询 dept_call 字段值中包含 1、2 或者 3 的记录,输入的 SQL 语句和执行结果如下所示。

79ed96350dbdad4d67de9c42b687adf7.png

114871bbe64c5d6caece3d29a2057696.png

查询结果中,dept_call 字段值中有 1、2、3 三个数字中的一个即为匹配记录字段。

匹配集合“[123]”也可以写成“[1-3]”,即指定集合区间。例如,“[a-z]”表示集合区间为a~z的字母,“[0-9]”表示集合区间为所有数字。

匹配指定字符以外的字符

“[^字符集合]”匹配不在指定集合中的任何字符。

【实例 12】在 tb_departments 表中,查询 dept_name 字段值包含字母 a~t 以外的字符的记录,输入的 SQL 语句和执行结果如下所示。

cf8fda9f0e12d65b511d0175465b8843.png

返回记录中的 dept_name 字段值中包含了指定字母和数字以外的值,如 u、y 等,这些字母均不在 a~t 中,满足匹配条件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/534170.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pyecharts anaconda_Pyecharts安装使用和绘图案例

一次偶然的机会,接触了pyecharts,发现做图交互效果非常棒,便深究、摸索、入坑。这篇文章主要讲述自己在安装和使用中遇到的问题,解决方法,最后还会有pyecharts中自己比较喜欢的绘图功能。pyecharts是一款将python与ech…

控制附件的大小 php,wordpress如何修改默认上传附件限制大小

关于上传文件大小的限制,有很多有几种情况,一是服务器上的限制(php.ini)php虚拟主机空间提供商为了保障服务器稳定、都会限制大容量附件上传,在php.ini文件中做了限制,二是网站程序本身都会有限制大小,wp媒体文件大小默…

如何把密度函数化为标准正态二维分布_概率微课:第三章(22) 二维随机变量及分布函数定义...

主要内容二维随机变量及分布函数定义更多系列视频概率微课:第二章(1) 随机变量的定义概率微课:第二章(2) 离散型随机变量概率微课:第二章(3) 两点分布及伯努利试验概率微课:第二章(4) 二项分布1概率微课:第二章(5) 二…

php中的缓,php中的缓存机制解释

php缓存的理解,先列出ob系列函数的作用:ob_start(func) 开启php缓存,回调函数是对缓存内数据的处理函数ob_gzhandler 作为 ob_start 的回调函数,对数据进行gz压缩ob_implicit_flush(true/false) 打开或关闭apache缓存&#xff0c…

php 下拉菜单多选get,Jquery实现select二级联动多选下拉菜单

前言平时虽然也有写前端,但是对于一些复杂的功能实现仍是一知半解。这次项目需要实现一个多选下拉菜单,并且该菜单要和上级下拉菜单保持联动。更加麻烦的是,我需要完成以下操作,以省、市二级联动菜单为例:选择河北省 &…

idea快捷键打开run的窗口_看了上篇文章,你不了解的IDEA操作……

注意作者:卡洛小豆。换种方式写文章,写的不好请多多见谅。未经授权,禁止转载夜,结束了一天的喧嚣后安静下来,伴随着远处路灯那微弱的光。风,毫无预兆地席卷整片旷野,撩动人的思绪万千。那是一个…

oracle查看物化视图的索引,oracle – 物化视图中的域索引返回零行

我有Oracle DB的问题 – 在物化视图上通过CONTAINS()搜索后,域索引返回零行.我看到物化视图充满了数据,我还使用过程ctx_ddl.sync_index()进行域索引同步.什么有用:>创建表>插入数据>创建域索引> SYNC DOMAIN INDEX>通过包含找到行 – 返回行什么不起…

arma模型_Eviews经典案例 | 初学者必看!ARMA模型精讲

【本期分析师介绍】希音老师,《数据分析学堂》金牌分析师,对eviews的时间序列、ARMA、VAR、VECM、ARCH、GARCH等操作有深入的研究和实战经验,累计服务客户1000。今天邀请希音老师给大家分享eviews的详细操作步骤。长文预警!可在文末联系麻瓜学…

oracle活跃用户,监控数据库中的活跃用户及其运行

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼[sql] view plain copy print?set linesize 120 pagesize 66col c1 for a9col c1 heading "OS User"col c2 for a9col c2 heading "Oracle User"col b1 for a9col b1 heading "Unix PID"col b2 for…

c# 路径下的最近文件夹_C#8.0的两个有趣的新特性以及gRPC

最近每天忙着跑很多地方,回家就不想动了,没什么心情写东西。今天有空,稍微写一点。下文中:关于C#语法特性的部分需要Visual Studio 2019支持。关于.NET Core的部分需要安装.NET 3.0 Preview4,低版本或许也可以但我没实…

alter table add column多个字段_ElementUI表格el-table表头固定自适应高度解决方案

一、前言ElementUI、iView都以相同的方式提供了表格组件表头固定的方法,即设置组件的height属性。表头固定很重要,就在于当表格数据项很多时,滚动条出现在表格组件内,而不是出现在表格组件外——这样的优点在于,滚动浏…

oracle ora 12011,执行oracle中的job报错:ORA-12011:无法执行作业1

LZ在做一个job执行每天新增一个表的操作时,存储过程运行没问题,job也创建成功,但运行job时,却报错: ,后又用sys用户登陆创建了同样的存储过程和job,结果可以执行成功。当时就猜测是权限问题。后…

e盘是否具有读写权限_轻松搭建MySQL主从复制、读写分离(双机热备)

主从复制: 当mysql数据库的数据量太大的时候,查询数据就很吃力了,无论怎么优化都会产生瓶颈,这时我们需要增加服务器设备来实现分布式数据库,实现多机热备份,要想实现多机的热备,首先要了解主从…

linux运维之道基础命令,Linux运维之道(7)——Linux管理类命令

(Linux)[系统管理]1. 目录管理类命令1.1 cd命令格式:cd [-L|[-P [-e]] [-]] [dir]被你忽略的小知识:在这里科普一个小小的知识点,就是关于cd -为什么可以自由的在当前目录和之前目录相互切换?其实,在我们的 Shell 的环…

html画图代码_python之matplotlib画图教程(2)

各位小表贝,你们的画图小老弟又来咯~上一次我们聊到了如何画离散图,这一次我们来点复杂的,准备好了么,系好安全带,准备发车咯~滴滴~我们先来点比较简单,那种易于上手的。如果现在我知道了两个点的坐标&…

在linux上面找一个脚本,30个Linux Shell脚本经典案例

在学习Linux运维时,普遍反馈是:Linux Shell是一个很难的知识板块。虽然大家都认真学,基本的语法也都掌握了,但有需求时,很难直接上手编程,要么写了很久,要么写不好!也有很多做运维很…

python图像识别代码_用Python进行简单图像识别(验证码)

这是一个最简单的图像识别,将图片加载后直接利用Python的一个识别引擎进行识别 将图片中的数字通过 pytesseract.image_to_string(image)识别后将结果存入到本地的txt文件中 #-*-encoding:utf-8-*- import pytesseract from PIL import Image class GetImageDate(ob…

linux 端口添加地址,linux – 绑定,网络(接口)和多播地址有什么区别?

实际上你在这里混淆了三种方法.第一个是bind,用于将套接字绑定到指定的地址和端口.使用此方法基本上您打开一个udp-port并等待该地址上的此端口的数据.第二个是join-method,用于让套接字加入指定的多播组.组播组的示例是224.0.0.1 – “所有主机”组播组 – 其针对同一网段上的…

c++ map初始化_Go学习每日一问(18)-map元素查找

每次学习并整理一个Golang的知识点,每天进步一点点。今天学习下go中的一个知识点:map元素查找日省吾身1.下面代码中 A B 两处应该怎么修改才能顺利编译?func main() { var m map[string]int //A m["a"] 1 if v : m["b&q…

linux运维需要哪些网络知识,Linux运维学习笔记-网络技术知识体系总结

jTemplates部分语法介绍1.{#if} {#if |COND|}..{#elseif |COND|}..{#else}..{#/if} Examples: {#if 2*816} good {#else} fail {# ...解密jQuery内核 DOM操作方法(二)html,text,val回顾下几组DOM插入有关的方法 innerHTML 设置或获取位于对象起始和结束标签…