正则表达式regexp基本可以称得上初学SQL查询语言中最没有存在感的了,它没有like那么好理解,没有数学运算符那么简单,没有 in,between and,is(not)null存在感那么强,不过偶尔casual也会突然有那么一两种场景,让你把regexp拿过来救命。
话不多说。
我的前几篇没有人看的文章中总结了查询语言的大框架,因为没有人会特意再找一遍所以我把它拿过来:
select 查询内容 from 能得到查询内容的表 where 筛选条件 group by 分组字段 having 最终筛选条件。
首先必须声明一点,where的筛选条件必须是你所查的表里面有的,having的筛选条件,是已经得到查询结果了,想从查询结果里再进一步筛选,他们之间的筛选对象是不同的,大家别整混了。
回到今天的主题,正则表达式,正则表达式作为筛选条件,可以用在where后面,也可以用在having后面。然后就说说正则表达式的用法:
字段名 regexp 正则表达式:意思是,获取字段中满足正则表达式的行信息。正则表达式里都能写啥,代表的都是啥意思,咱们往后看:
1、字段名 regexp '^河北':获取前两个字是河北的字段信息
2、字段名 regexp'^(河北|山西)':获取前两个字是河北或山西的字段信息
3、字段名 regexp '^.{2}$':获取字段信息占两个字符的字段信息
4、字段名 regexp '合':获取包含‘合’字的字段信息
5、字段名 regexp '^[a-z]$':获取以英文小写字母开头并且只包含小写字母的字符串,注意[a-z]不是a减z,是a至z。
前面的字段名后面就都不写了
6、^:表示一个字符串或行的开头
7、[a-z]:表示一个字符范围,匹配从 a 到 z 的任何字符。
8、 [0-9]:表示一个字符范围,匹配从 0 到 9 的任何字符。
9、[a-zA-Z]:这个变量匹配从 a 到 z 或 A 到 Z 的任何字符。请注意,你可以在方括号内指定的字符范围的数量没有限制,您可以添加想要匹配的其他字符或范围。
10、 [^a-z]:这个变量匹配不在 a 到 z 范围内的任何字符。请注意,字符 ^ 用来否定字符范围,它在方括号内的含义与它的方括号外表示开始的含义不同。
11、[a-z]*:表示一个字符范围,匹配从 a 到 z 的任何字符 0 次或多次。
12、[a-z]+:表示一个字符范围,匹配从 a 到 z 的任何字符 1 次或多次。
13.:匹配任意一个字符。
14、\.:表示句点字符。请注意,反斜杠用于转义句点字符,因为句点字符在正则表达式中具有特殊含义。还要注意,在许多语言中,你需要转义反斜杠本身,因此需要使用\\.。
15、$:表示一个字符串或行的结尾。
6-15抄一下力扣,没人会介意吧。标一下出处,万一以后我火了力扣要我赔钱就不好了。。
链接:https://leetcode.cn/problems/find-users-with-valid-e-mails/solutions/2366182/cha-zhao-yong-you-you-xiao-you-xiang-de-gn7ym/
差不多就这些了
下面看个题
代码如下
# Write your MySQL query statement below
select
*
from
Users
where
mail regexp '^[a-zA-Z][a-zA-Z0-9_.-]*\\@leetcode\\.com$';
又水一天