符号之间,记住你所需要的正则表达式

在sql语言中一般使用正则表达式过滤数据
01or的关系

a|b 结果=字段1(包含a)+字段2(包含b)
意思是字段中有a或者b都可以

SELECT *
FROM student.re
WHERE restr REGEXP 'a|b'

符号之间,记住你所需要的正则表达式_第1张图片
【】匹配括号内的单个字符

SELECT *
FROM student.re
WHERE restr REGEXP '[a]'

符号之间,记住你所需要的正则表达式_第2张图片
如果觉得和上一个没关系,请看下面例子

SELECT *
FROM student.re
WHERE restr REGEXP '[ab]'

【ab】表示【】里面有a或者b=a|b符号之间,记住你所需要的正则表达式_第3张图片
事实上上面的正则表达式也可以按照下面方式改写

SELECT *
FROM student.re
WHERE restr REGEXP '[a|b]'

符号之间,记住你所需要的正则表达式_第4张图片
【m-n】
表示匹配到m-n任意一个字符包括端点值

SELECT *
FROM student.re
WHERE restr REGEXP '[1-a]'

符号之间,记住你所需要的正则表达式_第5张图片
【m-n】=m|。。。+。。。|n
好吧,我承认这是一种在现实当中没人会去这样用的傻方法
不过,这也只是想帮你发现之间的关系,方便记忆
特殊的
mm?ns
表示选择mn或者mmn可以理解为
mm?ns=mn|mmn

SELECT *
FROM student.re
WHERE restr REGEXP 'aa|b'

符号之间,记住你所需要的正则表达式_第6张图片

【^ABC】
表示除ABC外必须有其他的

SELECT *
FROM student.re
WHERE restr REGEXP '[^abc]'

在这里插入图片描述
02指数的关系
a{m}
匹配到有m个a

SELECT *
FROM student.re
WHERE restr REGEXP 'a{2}'

在这里插入图片描述
a{m,}
匹配到m或者多个a

SELECT *
FROM student.re
WHERE restr REGEXP 'a{1,}'

这里其实可以理解为,对a不设置上限
符号之间,记住你所需要的正则表达式_第7张图片
有了不设置上限,有没有不设置下限呢?

SELECT *
FROM student.re
WHERE restr REGEXP 'a{,1}'!

符号之间,记住你所需要的正则表达式_第8张图片
类似的还有a{}

SELECT *
FROM student.re
WHERE restr REGEXP 'a{}'

结果和上面的一样
符号之间,记住你所需要的正则表达式_第9张图片
m能为0吗?当然可以

SELECT *
FROM student.re
WHERE restr REGEXP 'a{0,}'

等同于全选,虽然有结果。但是起不到过滤作用,是个鸡肋,没有卵用。

符号之间,记住你所需要的正则表达式_第10张图片
a{m,n}
匹配m到n个a

SELECT *
FROM student.re
WHERE restr REGEXP 'a{1,2}'

符号之间,记住你所需要的正则表达式_第11张图片
03其他关系
^a表示
以a开头的

SELECT *
FROM student.re
WHERE restr REGEXP '^ab'

在这里插入图片描述
a$
表示以a结尾的

SELECT *
FROM student.re
WHERE restr REGEXP 'ab$'

在这里插入图片描述
.a在字符串中必须有a。且a前必须有任意一个字符

SELECT *
FROM student.re
WHERE restr REGEXP '.ab'

在这里插入图片描述
ab+
匹配一个或多个ab,不包括空

SELECT *
FROM student.re
WHERE restr REGEXP 'ab+'

在这里插入图片描述
(。。。)意思是将()内的看成单一元素进行操作
(ab)+
ab,abab,ababab。。。。

SELECT *
FROM student.re
WHERE restr REGEXP '(ab)+'

符号之间,记住你所需要的正则表达式_第12张图片

你可能感兴趣的:(mysql)