php中文网 | cnphp.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 763|回复: 0

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

[复制链接]

3138

主题

3148

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

UID
1
威望
0
积分
7946
贡献
0
注册时间
2021-4-14
最后登录
2024-11-21
在线时间
763 小时
QQ
发表于 2022-1-23 07:30:28 | 显示全部楼层 |阅读模式
文章目录
一. 基本介绍
二. ^的用法
三. $的用法
四 . 的用法
五. […]和[^…]的用法
六. *和+的用法
七. ?的用法
八. | 的用法
九. {}的用法

一. 基本介绍
  正则表达式(regularexpression)描述了一种字符串匹配的规则,正则表达式本身就是一个字符串,使用这个字符串来描述、用来定义匹配规则,匹配一系列符合某个句法规则的字符串。在开发中,正则表达式通常被用来检索、替换那些符合某个规则的文本。
  MySQL通过REGEXP关键字支持正则表达式进行字符串匹配。
image.png
二. ^的用法
^是在字符串的前面开始匹配,可以理解为匹配前缀

^ 在字符串开始处进行匹配
[mw_shl_code=applescript,true]select  'abc' regexp '^a';
[/mw_shl_code]
image.png
当然如果我们想要匹配前缀字符串的话,则需要加上括号();
[mw_shl_code=applescript,true]select 'abc' regexp '^(ab)';
select 'abc' regexp '^(ac)';
[/mw_shl_code]
image.png
abc的前缀是ac,所以第一个返回为1,第二个范围为0。

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

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

$ 在字符串末尾开始匹配
[mw_shl_code=applescript,true]select 'abc' regexp 'a$';
select 'abc' regexp 'c$';
[/mw_shl_code]
$的作用是匹配尾部的字符 因为abc是以c结尾,所以第一个结果为0,第二个为1
image.png
同样,如果我们的后缀是一个字符串,则需要用括号。
[mw_shl_code=applescript,true]select 'abc' regexp '(bc)$';
select 'abc' regexp '(ac)$';
[/mw_shl_code]
image.png
abc的后缀是bc,所以第一个结果为1,第二个为0。

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

举例:
.匹配任意字符串
[mw_shl_code=applescript,true]select 'abc' regexp '.b';
select 'abc' regexp '.c';
select 'abc' regexp '.a';
[/mw_shl_code]
image.png
五. […]和[^…]的用法
[…]的作用是:
  匹配包含的任意一个字符,就是说只要能匹配到[]中的一个字符就行。

[…] 匹配括号中的任意单个字符
[mw_shl_code=applescript,true]select 'abc' regexp '[xyz]';
select 'abc' regexp '[xaz]';
[/mw_shl_code]
image.png [^…]的作用是:
  匹配为被包含的任意字符,就是指,匹配含有[]中没有的字符。例如:[^abc]可以匹配abcd中的d。

同时我们要注意,^只有在[]中的时候才有取反的意思。
[mw_shl_code=applescript,true]select 'a' regexp '[^abc]';
select 'x' regexp '[^abc]';
select 'abc' regexp '[^a]';
[/mw_shl_code]
image.png
六. *和+的用法
’ * '的用法官方的描述我觉得有点歧义,最主要的歧义还是因为他对+的描述。
image.png
这里说 * 是匹配0次或多次,而+是匹配一次或多次,这样描述很容易让人认为,他是将1次和多次区分开来,而且我们在学数学的概率论时也会将1次和多次区分开来,所以就肯让人理解且 * 是匹配0和多次,如果匹配到了1次,则不行。
可实际上却不是如此,最后查看别人的博客,才发现,它的意思是0到n次,也就是0次以上。

用法
[mw_shl_code=applescript,true]select 'stab'regexp '[.ta*b]';
select 'stb'regexp '[.ta*b]';
select ''regexp '[.ta*b]';
select ''regexp '[a*]';
[/mw_shl_code]
image.png
+的用法:
[mw_shl_code=applescript,true]select 'stab' regexp '.ta+b';
select 'stb' regexp '.ta+b';
[/mw_shl_code]
image.png
七. ?的用法
?的作用就是匹配0个或1个则为真,其他情况则为假。

举例:
[mw_shl_code=applescript,true]select 'stb' regexp '.ta?b';
select 'stab' regexp '.ta?b';
select 'staab' regexp '.ta?b';
[/mw_shl_code]
image.png
八. | 的用法
| 的作用就是匹配到了其中一个即可,例如a|b,这要目标字符串中有a,b其中一个即可。
[mw_shl_code=applescript,true]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)';
[/mw_shl_code]
image.png
九. {}的用法
{}有两种形式:

{n}表示匹配某个字符出现了n次
{n,m}表示某个字符出现了n到m次
举例:
u{n} 匹配n个u
[mw_shl_code=applescript,true]select 'auuuuuuub' regexp 'u{7}';
select 'auuuuuuub' regexp 'au{7}b';
[/mw_shl_code]
image.png
u{n,m} 匹配n到m个u
[mw_shl_code=applescript,true]select 'auuuub' regexp 'au{3,5}b';
select 'auuuuub' regexp 'au{3,5}b';
select 'auuuuuub' regexp 'au{3,5}b';
[/mw_shl_code]
image.png





上一篇:HTML常用标签之表单标签
下一篇:vue过滤器filters获取不到this对象的解决办法
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|php中文网 | cnphp.com ( 赣ICP备2021002321号-2 )

GMT+8, 2024-11-22 04:15 , Processed in 0.290617 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

申明:本站所有资源皆搜集自网络,相关版权归版权持有人所有,如有侵权,请电邮(fiorkn@foxmail.com)告之,本站会尽快删除。

快速回复 返回顶部 返回列表