当前位置: 首页 >文章 > 一个提高效率的工具,正则表达式,值得学习一下!
收藏
分享

一个提高效率的工具,正则表达式,值得学习一下!

举报小虎转载君小虎转载君发布于 2021-06-22874阅读1点赞
在工作中一般使用正则表达式来匹配,替换,检索文本,可以大大提高了工作效率...


今天再分享一个关于提高工作效率的工具:正则表达式

在工作中一般使用正则表达式来匹配,替换,检索文本,可以大大提高了工作效率

觉得有收获,希望帮忙点赞,转发下哈,谢谢,谢谢


简介
正则表达式,又称规则表达式,通常被用来检索、替换那些符合某个模式(规则)的文本。

许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。

学会使用正则表达式可以极大提高我们文本处理效率,并且各大操作系统、编程语言、文本编辑器都已经支持正则表达式

在线正则测试工具:https://regex101.com/r/PnzZ4k/1

下面的例子我会使用Sublime Text(对了,这个工具也非常好用)实现


元字符
一般普通字符表示的还是原来的意思,比如字符 e

举例:

所谓元字符(Metacharacter)就是指那些在正则表达式中具有特殊意义的专用字符

特殊单字符

举例1:

举例2:

空白符

举例:

s 能匹配上各种空白符号,也可以匹配上空格

量词

举例1:

举例2:

范围

举例:


贪婪、非贪婪与独占
正则有三种模式:贪婪匹配、非贪婪匹配和独占模式

贪婪匹配:在正则中,表示次数的量词默认是贪婪的,在贪婪模式下,会尝试尽可能最大长度去匹配。

非贪婪匹配:找出长度最小且满足要求的,量词后面要加上英文的问号(?),正则就变成了 a*?。

举个例子1:


匹配结果是:"aaa",""

为什么会匹配到空字符串?

因为星号(*)代表0到多次。

举个例子2:

独占模式:

不管是贪婪模式,还是非贪婪模式,都需要发生回溯才能完成相应的功能。

但是在一些场景下,我们不需要回溯,匹配不上返回失败就好了,因此正则中还有另外一种模式,独占模式,它类似贪婪匹配,但匹配过程不会发生回溯,因此在一些场合下性能会更好。

什么是回溯?

例如下面的正则:

regex = “xy{1,3}z”

text = “xyyz”

在匹配时,y{1,3}会尽可能长地去匹配,当匹配完 xyy 后,由于 y 要尽可能匹配最长,即三个,但字符串中后面是个 z 就会导致匹配不上,这时候正则就会向前回溯,吐出当前字符 z,接着用正则中的 z 去匹配

分组与引用

举个例子:

假设我们现在要去查找15位或18位数字。

根据前面学习的知识,使用量词可以表示出现次数,使用管道符号可以表示多个选择,你应该很快就能写出d15}d{18。

但经过测试,你会发现,这个正则并不能很好地完成任务,因为18位数字也会匹配上前15位

没有匹配到18位的记录

解决方式

可以用括号括起来表示一个整体

替换举例


替换后:

匹配模式

常见的匹配模式有4种,分别是不区分大小写模式、点号通配模式、多行模式和注释模式

不区分大小写模式

**使用模式修饰符:**放在整个正则前面时,表示匹配模式

点号通配模式
点号它可以匹配上任何符号,但不能匹配换行,如何匹配真正的“任意”符号

多行匹配模式
多行模式的作用在于,使 ^ 和 $ 能匹配上每行的开头或结尾,我们可以使用模式修饰符号 (?m) 来指定这个模式

注释模式
为正则添加注释

断言
断言是指对匹配到的文本位置有要求。

通过一些例子来讲解。

你应该知道 d{11} 能匹配上11位数字,但这11位数字可能是18位身份证号中的一部分。再比如,去查找一个单词,我们要查找 tom,但其它的单词,比如 tomorrow 中也包含了tom


单词边界


环视
举例邮政编码的判断:6位数字,且左边不是数字,右边不是数字




本文原创,未经作者允许不可转载!
更多内容,欢迎关注作者微信公众号: 月伴飞鱼!


0条评论
别默默看啦~登录/注册一起参与讨论吧~

暂无评论

请选择举报理由

违反法律法规

侵犯个人权益

有害网站环境

更多训练营>>

为你推荐 · 训练营(全勤打卡报名费全额返累计全额返用户134,638人)

【10月】趣味MG动画制作训练营
距离开班仅剩2天27人已报名
文旅文创插画专项团练
距离开班仅剩5天38人已报名
【10月】零基础动态表情包创作训练营
距离开班仅剩14天26人已报名
特惠
充值
7折购
今日还在继续学习的你,太棒了!
7
折扣券可用于
年费无限VIP
立 即
使 用
此活动优惠不可与其他活动叠加使用
有效期:000000
消息
登录即可查看消息记录
建议
意见
官方
客服
在线咨询

您可以与在线客服进行沟通获得帮助

工作日:9:00~22:00节假日:9:00~18:00

联系在线客服
虎课
积分
免费学习91000+个教程!
配套素材、源文件一键下载!
昨日学员已学习了34,977
并提交了123份作业!
登录后立即学习!
loading
微信扫码关注即可登录
您需要同意协议才可以进行登录
登录虎课网,每天免费学课程全站 91000+ 视频会员教程 | 每日可免费学 1
为确保账户信息安全
请先进行真实姓名验证后进行充值付款
立即验证