当前位置: 首页 > ops >正文

Mysql刷题之正则表达式专题

一、基本语法

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

SELECT column FROM table WHERE column REGEXP 'pattern';
-- 或
SELECT column FROM table WHERE column RLIKE 'pattern';

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

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 查找拥有有效邮箱的用户

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 患某种疾病的患者

也可以用正则来做

http://www.xdnf.cn/news/8005.html

相关文章:

  • 程序编辑器快捷键总结
  • Spring Boot与Disruptor高性能队列整合指南
  • SpringAI 大模型应用开发篇-SpringAI 项目的新手入门知识
  • Vue3实现轮播表(表格滚动)
  • App Builder技术选型指南:从AI编程到小程序容器,外卖App开发实战
  • STM32 CAN CANAerospace
  • 我爱学算法之—— 二分查找(中)
  • MySQL迁移SSL报错
  • web实验(2)
  • Redis 基础知识详解
  • 【笔记】修复AttributeError: ‘super‘ object has no attribute ‘__del__‘
  • 解决Qt Creator在Ubuntu环境下运行Qt程序后,程序中无法输入中文
  • MySQL的可重复读事务隔离级别的实现原理
  • leetcode 438. 找到字符串中所有字母异位词
  • Linux `nc` 命令详细讲解
  • vue3:十四、角色权限管理-表格引入-树形表格
  • Axure系统原型设计列表版方案
  • BERT框架:自然语言处理的革命性突破
  • PostgreSQL 14 pacemaker 高可用集群
  • czml数据以及应用
  • uniapp打包报错:重新在manifest.json中生成自己的APPID
  • MacBookPro上macOS安装第三方应用报错解决方案:遇到:“无法打开“XXX”,因为无法确定(验证)开发者身份?怎么解决
  • Android 网络全栈攻略(三)—— 从三方库原理来看 HTTP
  • 代码走读 Go 语言 Map 的实现
  • MAX96752FGTN/V+T:双LVDS(OLDI)输出的GMSL2解串器架构与应用探讨——汽车与工业视频传输方案深度分析
  • 新能源汽车移动充电服务:如何通过智能调度提升充电桩可用率?
  • 从零基础到最佳实践:Vue.js 系列(9/10):《单元测试与端到端测试》
  • Elasticsearch 分页查询的 from+size 有什么缺陷?如何优化深度分页?比较scroll API与search_after的差异
  • 软考中级软件设计师——设计模式篇
  • window 显示驱动开发-指定 GDI 硬件加速渲染操作