Python21天学习挑战赛Day2·正则表达式(语法篇)

在这里插入图片描述 

活动地址:CSDN21天学习挑战赛

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。

学习日记(1)

目录

学习日记(1)

正则表达式概念

一、正则表达式语法

1、行定位符

2、元字符

3、限定符

4、字符类

5、排除字符 

6、选择字符

7、转义字符

8、分组

9、python中的正则表达式语法

10、懒惰匹配和贪婪匹配

二、附录​编辑 


正则表达式概念


    正则表达式(regular expression,常写为regex或RE),又称规则表达式。正则表达式不是某种编译语言特有的,而是计算机科学的一个概念,通常被用来检索和替换符合某些规则的文本。几乎所有字符串操作都可以通过正则表达式来完成,正则表达式的本质是一个特殊的字符序列,可以方便地查找一个字符串是否与我们定义的字符序列的某种模式相匹配。
 

知识构架:

一、正则表达式语法

1、行定位符

行定位符是描述字符串边界的。例如“^”表示行的开始,“$”表示行的结尾。
举个栗子:

1、^tm
2、tm$

    第一个表达式表示要匹配字符串以tm开头,如tm equal Tomorrow就可以匹配,而Tomorrow Moon equal tm 就不匹配,反而第二个式子能匹配这一个。如果要匹配的字符串可以出现在字符串的任意部分,那么可以直接写成“tm”

2、元字符

\bmr\w*\b

上面这个例子,匹配的是以字母mr开头的单词,先匹配单词开始处(\b),然后匹配字母mr,接着匹配任意数量的字母或数字(\w*),最后匹配单词结束处(\b)。即,该表达式可以匹配形如“mrsoft”,“mrbook”,“mr1234567”等。 

3、限定符

在上面,我们使用了“\w*”来匹配任意数量的字母或数字。如果想匹配特定数量的数字则需要正则表达式的限定符(指定数量的字符)来实现。例如要匹配8位QQ可使用:^d{8}$

在这里插入图片描述

4、字符类

匹配没有预定义元字符的字符集合只需要在方括号里列出他们即可。例如元音字母a,e,i,o,u。那么,[aeiou]即匹配任何一个英文元音字母。[.?!]即可匹配标点符号“.”、“?”、“!”。当然,[0—9]代表含义于\d是一样的,即代表一位数字。同理,如果只考虑英文的话,[a-z0-9A-Z]也完全等于\w。

5、排除字符 

正则表达式提供的字符“^”,表示行的开始,但这里将会把它放进方括号中,表示排除的意思

[^a-zA-Z] 用于匹配一个非字母的字符

6、选择字符

选择字符(|)。该字符可以理解为“或”。下面,以匹配身份证为例。

匹配身份证的表达式可以写为:
(^\d{15}$)|(^\d{18}$)|(^\d{17})(\d|X|x)$

匹配身份证的表达式可以写为:
(^\d{15}$)|(^\d{18}$)|(^\d{17})(\d|X|x)$

上述表达式的意思是可以匹配15位或18位或17位的数字和最后一位。需要注意的是最后一位可能是x也可能是X。

7、转义字符

转义字符(\)是将特殊字符“?”、“!”、“.”等变为普通字符的字符。
例如,我们要使用正则表达式匹配IP 127.0.0.1

直接用点字符写会写成:
[1-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}

但是这显然是不对的!因为“.”可以匹配任意一个字符,因此,不仅是 127.0.0.1会被匹配,连1271011011也会被匹配。所以,在使用点字符时,需要使用转义字符,即该IP应写为:

[1-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}

8、分组

通过刚才对身份证匹配的例子,我们发现小括号字符的第一个作用就是可以改变限定符的作用范围,如“|”、“*”、“^”、等。

(one|two)th

这个表达式的意思是匹配单词one或two。如果不用小括号的话就变成了匹配one和two了。
小括号的第二个作用就是分组,也就是子表达式。

如:
(.[0-9]{1,3}){3}

这个表达式就是对分组(.[0-9]{1,3})重复三次操作。

PS:括号在正则表达式中也算一个元字符。

9、python中的正则表达式语法

在python中使用正则表达式是将其作为模式字符串使用的。

1、将匹配一个非字母字符的时候正则表达式转换为模式字符串,可使用
‘[^a-zA-Z]’
2、匹配以字母m开头的单词的正则表达式转换为模式字符串,则不能在其两侧添加引号定界符 ‘\bm\w*\b
由于模式字符串中可能包括大量的特殊字符和反斜杠,因此需要写为原生字符串,即,在模式字符串前加r或R。如:r’\bm\w*\b’

10、懒惰匹配和贪婪匹配


贪婪匹配:正则表达式中包含重复的限定符时,通常的行为是匹配尽可能多的字符。

懒惰匹配:匹配尽可能少的字符。

例如: a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。但此时需要匹配的是ab这样的话就需要用到懒惰匹配了。
在这里插入图片描述

二、附录

在这里插入图片描述 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

醉蕤

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

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

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

打赏作者

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

抵扣说明:

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

余额充值