Mysql刷题之正则表达式专题

一、基本语法

要找满足正则表达式的字段:

sql 复制代码
SELECT column FROM table WHERE column REGEXP 'pattern';
-- 或
SELECT column FROM table WHERE column RLIKE 'pattern';

要找不符合正则表达式的字段:

sql 复制代码
select column from table where column not regexp 'pattern'

二、常用正则元字符​

元字符 说明 示例
^ 匹配字符串开头 ^abc → 以 "abc" 开头
$ 匹配字符串结尾 xyz$ → 以 "xyz" 结尾
. 匹配任意单个字符(除换行符) a.c → "abc", "a1c"
* 匹配前一个字符 0 次或多次 ab*c → "ac", "abbc"
+ 匹配前一个字符 1 次或多次 ab+c → "abc", "abbc"
? 匹配前一个字符 0 次或 1 次 ab?c → "ac", "abc"
{n} 匹配前一个字符恰好 n a{3} → "aaa"
{n,} 匹配前一个字符至少 n a{2,} → "aa", "aaa"
[...] 匹配括号内任意一个字符 [aeiou] → 匹配任意元音字母
[^...] 不匹配括号内任意字符 [^0-9] → 非数字字符
` ` 或操作符
() 分组 (ab)+ → "ab", "abab"

a-z\]:表示一个字符范围,匹配从 a 到 z 的任何字符。 \[0-9\]:表示一个字符范围,匹配从 0 到 9 的任何字符。 \[a-zA-Z\]:这个变量匹配从 a 到 z 或 A 到 Z 的任何字符。请注意,你可以在方括号内指定的字符范围的数量没有限制,您可以添加想要匹配的其他字符或范围。 \[\^a-z\]:这个变量匹配不在 a 到 z 范围内的任何字符。请注意,字符 \^ 用来否定字符范围,它在方括号内的含义与它的方括号外表示开始的含义不同。 \[a-z\]\*:表示一个字符范围,匹配从 a 到 z 的任何字符 0 次或多次。 \[a-z\]+:表示一个字符范围,匹配从 a 到 z 的任何字符 1 次或多次。 .:匹配任意一个字符。 \\.:表示句点字符。请注意,反斜杠用于转义句点字符,因为句点字符在正则表达式中具有特殊含义。还要注意,在许多语言中,你需要转义反斜杠本身,因此需要使用\\\\.。 ### 理解: 1.所谓正则表达式其实就是个字符串 , 在匹配的时候,满足这个字符串出现的规则即可。 2.请注意 ,如果要在正则表达式中匹配上面元字符本身 (比如 **.** ),必须加转义字符 **\\** 3.在SQL中 ,反斜杠本身也需要转义 , 也就是说 要再加一个**\\ 语法才正确!!** ## 三、相关题目 ## 1. [LC 1517 查找拥有有效邮箱的用户](https://leetcode.cn/problems/find-users-with-valid-e-mails/?envType=study-plan-v2&envId=sql-free-50 "LC 1517 查找拥有有效邮箱的用户") ```sql select user_id , name , mail from Users where mail regexp '^[a-zA-Z][a-zA-Z0-9_.-]*@leetcode\\.com$' ``` 正则匹配含义如下: \^表示开头,\[a-zA-Z\]表示第一个字符从a-z,A-Z中随便选一个 , \[a-zA-Z0-9_.-\]\* 表示a-z,A-Z,0-9这些字符随便出一个 ,并且可以出现n次或0次 @leetcode 表示前面的字符完了, 之后必须跟上@leetcode **\\\\. 转义字符 ,对 . 进行转义 ,表示后面必须跟一个 .** com$ 表示com完了 ,整个字符串必须以com作为结尾。 ### 2.LC 1527 患某种疾病的患者 也可以用正则来做

相关推荐
kejiayuan34 分钟前
CTE更易懂的SQL风格
数据库·sql
kaico201838 分钟前
MySQL的索引
数据库·mysql
清水白石0081 小时前
解构异步编程的两种哲学:从 asyncio 到 Trio,理解 Nursery 的魔力
运维·服务器·数据库·python
资生算法程序员_畅想家_剑魔1 小时前
Mysql常见报错解决分享-01-Invalid escape character in string.
数据库·mysql
PyHaVolask2 小时前
SQL注入漏洞原理
数据库·sql
ptc学习者2 小时前
黑格尔时代后崩解的辩证法
数据库
代码游侠2 小时前
应用——智能配电箱监控系统
linux·服务器·数据库·笔记·算法·sqlite
!chen2 小时前
EF Core自定义映射PostgreSQL原生函数
数据库·postgresql
霖霖总总2 小时前
[小技巧14]MySQL 8.0 系统变量设置全解析:SET GLOBAL、SET PERSIST 与 SET PERSIST_ONLY 的区别与应用
数据库·mysql
马克学长3 小时前
SSM校园食堂订餐系统531p9(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架·ssm 校园食堂订餐系统