MySQL数据库基本操作-正则表达式

一. 基本介绍

  正则表达式(regularexpression)描述了一种字符串匹配的规则,正则表达式本身就是一个字符串,使用这个字符串来描述、用来定义匹配规则,匹配一系列符合某个句法规则的字符串。在开发中,正则表达式通常被用来检索、替换那些符合某个规则的文本。
  MySQL通过REGEXP关键字支持正则表达式进行字符串匹配。

在这里插入图片描述

二. ^的用法

^是在字符串的前面开始匹配,可以理解为匹配前缀

^ 在字符串开始处进行匹配

select  'abc' regexp '^a';

^ 其实就是匹配开头的子符 因为abc是以a开头,所以它的结果是1

在这里插入图片描述
当然如果我们想要匹配前缀字符串的话,则需要加上括号();

select 'abc' regexp '^(ab)';
select 'abc' regexp '^(ac)';

在这里插入图片描述
abc的前缀是ac,所以第一个返回为1,第二个范围为0。

注意:一个符号 ^ 只能对应一个字符进行 ^ 方式的匹配,如果要将一个字符串进行^方式匹配,则要将其看作一个整体,我们用括号()来将其表示为一个整体,包括后面的表达式也是如此。

三. $的用法

$其实就是在字符的末尾出开始匹配,可以理解为匹配后缀

$ 在字符串末尾开始匹配

select 'abc' regexp 'a$';
select 'abc' regexp 'c$';

$的作用是匹配尾部的字符 因为abc是以c结尾,所以第一个结果为0,第二个为1
在这里插入图片描述

同样,如果我们的后缀是一个字符串,则需要用括号。

select 'abc' regexp '(bc)$';
select 'abc' regexp '(ac)$';

在这里插入图片描述
abc的后缀是bc,所以第一个结果为1,第二个为0。

四 . 的用法

.可以匹配除\n以外的任何字符串,可以理解为可以抵消掉任意字符,例如:我们用 ’.b’对
’abc’行匹配,.匹配了第一个字符a,而b刚好匹配,所以它的结果是真。

举例:
.匹配任意字符串

select 'abc' regexp '.b';
select 'abc' regexp '.c';
select 'abc' regexp '.a';

在这里插入图片描述

五. […]和[^…]的用法

[…]的作用是:
  匹配包含的任意一个字符,就是说只要能匹配到[]中的一个字符就行。

[…] 匹配括号中的任意单个字符

select 'abc' regexp '[xyz]';
select 'abc' regexp '[xaz]';

在这里插入图片描述
[^…]的作用是:
  匹配为被包含的任意字符,就是指,匹配含有[]中没有的字符。例如:[^abc]可以匹配abcd中的d。

同时我们要注意,^只有在[]中的时候才有取反的意思。

select 'a' regexp '[^abc]';
select 'x' regexp '[^abc]';
select 'abc' regexp '[^a]';

在这里插入图片描述

六. *和+的用法

’ * '的用法官方的描述我觉得有点歧义,最主要的歧义还是因为他对+的描述。
在这里插入图片描述
这里说 * 是匹配0次或多次,而+是匹配一次或多次,这样描述很容易让人认为,他是将1次和多次区分开来,而且我们在学数学的概率论时也会将1次和多次区分开来,所以就肯让人理解且 * 是匹配0和多次,如果匹配到了1次,则不行。
可实际上却不是如此,最后查看别人的博客,才发现,它的意思是0到n次,也就是0次以上。

用法

select 'stab'regexp '[.ta*b]';
select 'stb'regexp '[.ta*b]';
select ''regexp '[.ta*b]';
select ''regexp '[a*]';

在这里插入图片描述
+的用法:

select 'stab' regexp '.ta+b';
select 'stb' regexp '.ta+b';

在这里插入图片描述

七. ?的用法

?的作用就是匹配0个或1个则为真,其他情况则为假。

举例:

select 'stb' regexp '.ta?b';
select 'stab' regexp '.ta?b';
select 'staab' regexp '.ta?b';

在这里插入图片描述

八. | 的用法

| 的作用就是匹配到了其中一个即可,例如a|b,这要目标字符串中有a,b其中一个即可。

select 'a' regexp 'a|b';
select 'b' regexp 'a|b';
select 'b' regexp '^(a|b)';
select 'a' regexp '^(a|b)';
select 'c' regexp '^(a|b)';

在这里插入图片描述

九. {}的用法

{}有两种形式:

  1. {n}表示匹配某个字符出现了n次
  2. {n,m}表示某个字符出现了n到m次

举例:
u{n} 匹配n个u

select 'auuuuuuub' regexp 'u{7}';
select 'auuuuuuub' regexp 'au{7}b';

在这里插入图片描述
u{n,m} 匹配n到m个u

select 'auuuub' regexp 'au{3,5}b';
select 'auuuuub' regexp 'au{3,5}b';
select 'auuuuuub' regexp 'au{3,5}b';

在这里插入图片描述

  • 20
    点赞
  • 81
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

友人苏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值