首页 > 数据库 >MySQL-正则表达式规范

MySQL-正则表达式规范

时间:2023-06-02 17:12:43浏览次数:49  
标签:字符 +-----+------+ 匹配 正则表达式 规范 转义 MySQL

 MySQL中的正则表达式采用的是PCRE的规范,匹配时按字符进行。

RLIKE

您可以使用RLIKE语句匹配正则表达式,支持的元字符如下表所示。

元字符

说明

^

行首。

$

行尾。

.

任意字符。

*

匹配前面的子表达式0次或多次。

+

匹配前面的子表达式1次或多次。

?

匹配前面的子表达式0次或1次。

?

匹配修饰符,当该字符跟在任何一个其他限制符 (* 、+、?、 {n}、 {n,}、 {n,m})后面时,匹配模式为非贪婪模式。非贪婪模式尽可能少的匹配所搜索的字符串, 而默认的贪婪模式则尽可能多的匹配所搜索的字符串。

A|B

A或B。

(abc)*

匹配abc序列0次或多次。

{n}或{m,n}

匹配的次数。

[ab]

匹配括号中的任一字符。模式匹配a或b。

[a-d]

匹配a、b、c、d任一字符。

[^ab]

^表示非,匹配任一非a非b的字符。

[::]

见下表POSIX字符组。

\

转义符。

\n

n为数字1-9,后向引用。

\d

数字。

\D

非数字。

字符组

字符组类型

字符组

说明

范围

POSIX字符组

[[:alnum:]]

字母字符和数字字符

[a-zA-Z0-9]

[[:alpha:]]

字母

[a-zA-Z]

[[:ascii:]]

ASCII字符

[\x00-\x7F]

[[:blank:]]

空格字符和制表符

[ \t]

[[:cntrl:]]

控制字符

[\x00-\x1F\x7F]

[[:digit:]]

数字字符

[0-9]

[[:graph:]]

空白字符之外的字符

[\x21-\x7E]

[[:lower:]]

小写字母字符

[a-z]

[[:print:]]

[:graph:]和空白字符

[\x20-\x7E]

[[:punct:]]

标点符号

[][!”#$%&’()*+,./:;<=>? @\^_`{|}~-]

[[:space:]]

空白字符

[ \t\r\n\v\f]

[[:upper:]]

大写字母字符

[A-Z]

[[:xdigit:]]

十六进制字符

[A-Fa-f0-9]

中文字符组

不涉及

包括汉字在内的双字节字符

[^\\x{00}-\\x{ff}]

不涉及

中文字符

[\\x{4e00}-\\x{9fa5}]

不涉及

中文标点

中文标点无统一的编码范围,您可以在搜索引擎上搜索中文标点符号Unicode码,然后结合运算符来逐个排除。

例如句号(。)对应正则表达式为[\\x{3002}]。执行select * from values ('你好。'),('nihao!') t(d) where d rlike '[\\x{3002}]';返回结果为你好。。

说明 如果要匹配单引号,可以用unicode0027,对应正则表达式为 [\\x{0027}]。

转义符

由于系统采用反斜线\作为转义符,因此正则表达式的模式中出现的\都要进行二次转义。例如正则表达式要匹配字符串a+b。其中+是正则中的一个特殊字符,因此要用转义的方式表达,在正则引擎中的表达方式是a\\+b。由于系统还要解释一层转义,因此能够匹配该字符串的表达式是a\\\+b

示例如下。
select 'a+b' rlike 'a\\\+b';
+------+
| _c1  |
+------+
| true |
+------+
极端的情况,如果要匹配字符\, 由于在正则引擎中\是一个特殊字符,因此要表示为\\,而系统还要对表达式进行一次转义,因此写成\\\\
select 'a\\b', 'a\\b' rlike 'a\\\b';
+-----+------+
| _c0 | _c1  |
+-----+------+
| a\b | false |
+-----+------+
select 'a\\b', 'a\\b' rlike 'a\\\\b';
+-----+------+
| _c0 | _c1  |
+-----+------+
| a\b | true |
+-----+------+
  说明 在MySQL中写a\\b,而在输出结果中显示a\b,同样是因为MySQL会对表达式进行转义。 如果字符串中有制表符TAB,系统在读入\t这两个字符时,已经将其存为一个字符,因此在正则的模式中它也是一个普通的字符。
select 'a\tb', 'a\tb' rlike 'a\tb';
+---------+------+
| _c0     | _c1  |
+---------+------+
| a     b | true |
+---------+------+

标签:字符,+-----+------+,匹配,正则表达式,规范,转义,MySQL
From: https://www.cnblogs.com/yeyuzhuanjia/p/17452366.html

相关文章

  • 3月11日严老师MySQL面试资料 一般有用 看1
    Mysql金三银四面试突击班Lecturer:严镇涛1.Binlog是什么,有什么用?(数据库被人干掉了怎么办?)1.binLog:数据恢复主从复制MySQLServer层也有一个日志文件,叫做binlog,它可以被所有的存储引擎使用。binlog以事件的形式记录了所有的DDL和DML语句(因为它记录的是操作而不是......
  • MySQL中将多行查询结果合并为一行展示SQL语句书写
    写在前面最近开发过程中,遇到一个需求是要将所查询的多条结果汇总成一条结果展示,由于之前没有接触过这方面的业务,所以经过一番折腾之后,解决了需求,这里特此记录一下,以供后续参考!1、问题复现这里以一个例子进行说明:需求:一个员工每月是否完成了打卡,要求统计员工当月完成和未完成......
  • Win11 MySQL 5.7 安装
    Win11MySQL5.7下载MySQLDownload我下载的是5.7.4m14解压解压到你指定的目录这是我解压到的目录D:\App_Install\mysql-5.7设置环境变量在环境PATH添加D:\App_Install\mysql-5.7\bin创建文件在D:\App_Install\mysql-5.7创建my.ini文件......
  • Mysql读写分离
    拓扑图:推荐步骤:配置安装Mysql配置一主两从安装三台Mysql服务器配置和验证Mysql数据库主从复制配置和验证Mysql数据库的读写分离实验步骤:配置安装主Mysql修改mysql主配置文件设置密码安装从mysql服务器安装完成设置密码安装第二天从mysql服务器启动服务并设置密码配置主从复制验证主......
  • mysql 特有的 重复的主键 更新on duplicate key update
    insertintoharm_behavor_info(id,name,age,hobby,del_status)values(1,'xc','28','跑步',0)onduplicatekeyupdatedel_status=0,age=values(age),hobby=values(hobby)在向mysql中插入数据的时候,如果主键重复了,则执行更新语句。固定字段的值可以直接写,比......
  • mysql一键生成APIs应用
     Go&Rust......
  • Git Commit Log 相关规范及定义
    GitCommitLog相关知识一.commitlog规范的意义便于程序员对提交历史进行追溯,方便追责(笑)约束commitmessage,意味着每次提交都有意义,因此需要慎重的进行提交;不能将所有的文件都放到一个commit里面;一个commit一个文件,这样才能更加细化提交的功能格式化的c......
  • MySQL日志
    文章目录一、理论二、错误日志(ErrorLog)三、二进制日志四、事务日志(redo日志)五、慢查询日志(slowquerylog)一、理论数据库日常操作和错误信息。MySQL有不同类型的日志文件(各自存储了不同类型的日志),从日志当中可以查询到MySQL数据库的运行情况、用户的操作、错误的信息等。MySQ......
  • 使用 mysql-replication python监听mysql binlog 实时同步数据
    使用mysql-replicationpython监听mysqlbinlog实时同步数据文章目录使用mysql-replicationpython监听mysqlbinlog实时同步数据前言一、环境二、安装与配置1.首先安装mysql-replication2.参数3.配置数据库4.读取binlog日志总结前言数据库的基础信息需要频繁访问,需要存入red......
  • Mysql / MariaDB 操作 《 json 》 字段
    Mysql/MariaDB操作《json》字段Mysql/MariaDB操作《json》字段提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录Mysql/MariaDB操作《json》字段前言环境一、数据库结构二、使用方法1.查找json_value字段中a字段等于1三、常用方法总......