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 患某种疾病的患者 也可以用正则来做

相关推荐
0xDevNull24 分钟前
MySQL数据冷热分离详解
后端·mysql
科技小花40 分钟前
数据治理平台架构演进观察:AI原生设计如何重构企业数据管理范式
数据库·重构·架构·数据治理·ai-native·ai原生
一江寒逸41 分钟前
零基础从入门到精通MySQL(中篇):进阶篇——吃透多表查询、事务核心与高级特性,搞定复杂业务SQL
数据库·sql·mysql
D4c-lovetrain43 分钟前
linux个人心得22 (mysql)
数据库·mysql
阿里小阿希1 小时前
CentOS7 PostgreSQL 9.2 升级到 15 完整教程
数据库·postgresql
荒川之神1 小时前
Oracle 数据仓库雪花模型设计(完整实战方案)
数据库·数据仓库·oracle
做个文艺程序员2 小时前
MySQL安全加固十大硬核操作
数据库·mysql·安全
不吃香菜学java2 小时前
Redis简单应用
数据库·spring boot·tomcat·maven
一个天蝎座 白勺 程序猿2 小时前
Apache IoTDB(15):IoTDB查询写回(INTO子句)深度解析——从语法到实战的ETL全链路指南
数据库·apache·etl·iotdb
不知名的老吴2 小时前
Redis的延迟瓶颈:TCP栈开销无法避免
数据库·redis·缓存