秒懂正则匹配,领略正则魅力

7 篇文章 17 订阅

在这里插入图片描述
🍖🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖
🍖🍖
🍖🍖🍖
🍖🍖🍖🍖 作者 : 不良使
🍖🍖🍖🍖🍖 潜力创作新星 华为云享专家
🍖🍖🍖🍖🍖🍖 博客记录学习的思路,项目和错误,寻找志同道合的朋友
🍖🍖🍖🍖🍖🍖🍖 如果觉得有帮助记得一键三连 ┗|`O′|┛ 嗷~~
🍖🍖🍖🍖🍖🍖🍖🍖

🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖

🍓🍓什么是正则表达式?

正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
例如:
runoo+b,可以匹配 runoob、runooob、runoooooob 等,+ 号代表前面的字符必须至少出现一次(1次或多次)。
runoob,可以匹配 runob、runoob、runoooooob 等, 号代表前面的字符可以不出现,也可以出现一次或者多次(0次、或1次、或多次)。
colou?r 可以匹配 color 或者 colour,? 问号代表前面的字符最多只可以出现一次(0次或1次)。
构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与运算符可以将小的表达式结合在一起来创建更大的表达式。正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。
正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式。模式描述在搜索文本时要匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。



开始之前来个小插曲。 可以伴随一生的编程软件(完全免费)。里面除了全国top的刷题题库,还有招聘(社招和校招)、一些上岸大厂的大佬的面试经验,从学校到社会工作,时时刻刻你都可以用到,感兴趣的可以去注册试试可以伴随程序员一生的app



🍓🍓语法

🕎🕎语法一:

在这里插入图片描述
💖💖**.和\n结合感觉直接无敌。**
💖💖**\s和\S,\d和\D,\w和\W,大小写都是相反的意思,两个和互为补充.例如\d是匹配数字,\D是匹配非数字。一篇所能看见的文章或者新闻不都是数字和非数字(符号,字母等)组成的吗。**

🕎🕎语法二

在这里插入图片描述

量词,就是控制前面数量的词。例如:
我的电话是10000886
\d\d\d 匹配的是100
\d+ 匹配的是10000886

量词最重要的体现还是在贪婪和非贪婪上。

🚀🚀非贪婪
非贪婪,从左到右执行,.?会分开执行,会先执行 .,匹配最后一个游戏前的所有。然后执行问号,回溯找到符号要求的第一个游戏
在这里插入图片描述
🚀🚀贪婪
我们可以发现贪婪尽可能的匹配
在这里插入图片描述
我这有两个在线正则测试工具,连接会放在最后面。


🍓🍓python中的正则方法

🕎🕎findall

findall,找到所有

代码:

import re
lst=re.findall(r"\d+","我的电话是10011,第二个电话是10086")
print(lst)

结果:
在这里插入图片描述

🕎🕎finditer

finditer,迭代器形式,效率更高

代码:

# todo 上面一个效率低,下面这个返回的是迭代器,效率高的多。循环打印
it=re.finditer(r"\d+","我的电话是10011,第二个电话是10086")
for i in it:
    print(i.group())

结果:
在这里插入图片描述

🕎🕎search

search,找到符合结果的第一个匹配值,有点像非贪婪

代码:

# todo search  找到一个结果就返回,所以只找到了 10011 ,没有找到10086
s=re.search(r"\d+","我的电话是10011,第二个电话是10086")
print(s.group())

结果:
在这里插入图片描述

🕎🕎match

match,从头开始匹配,慎用,稍有不注意万劫不复

代码:

# todo match() 从头开始匹配
a=re.match(r"\d+","我的电话是10011,第二个电话是10086")  # todo 报错
b=re.match(r"\d+","10011,第二个电话是10086")
print(b)

结果:
在这里插入图片描述

a开始不是数字,而match是从头开始匹配的,所以肯定会报错,不信可以自己试试。

🕎🕎compile

compile,正则预加载,使用较广

代码:

# todo 预加载正则表达式
obj=re.compile(r"\d+")
result=obj.finditer("我的电话是10011,第二个电话是10086")
for i in result:
    print(i.group())

ret=obj.findall("明天就把欠我的100000000还我")
print(ret)

结果:
在这里插入图片描述

好处是可以反复使用,类似于封装的函数。


🍓🍓正则在线测试工具

来自开源中国的测试工具:
正则在线测试平台
在这里插入图片描述

国外某机构正则测试平台[支持多语言]
在这里插入图片描述







**觉得有用的可以给个三连,关注一波!!!带你了解更多小知识

  • 87
    点赞
  • 178
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 56
    评论
评论 56
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

不良使

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

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

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

打赏作者

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

抵扣说明:

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

余额充值