python re库的正则表达式入门学习教程
简介
正则表达式本身是一种小型的、高度专业化的编程语言,而在python中,通过内嵌集成re模块,程序媛们可以直接调用来实现正则匹配。正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎执行。
下面话不多说了,来一起看看详细的介绍吧
1.安装
默认已经安装好了python环境了
re库是python3的核心库,不需要pipinstall,直接import就行
2.最简单的模式
字符本身就是最简单的模式
比如:'A','Iloveyou','test'
然是注意在定义模式字符串的时候,在前面加上r,它的作用是告诉编译器,接下来的字符串是单纯的字符串,请不要转变为转义字符。
例子
importre pattern=r'Cookie' sequence='Cookie' re.match(pattern,sequence)
re.match()是常用的函数,如果匹配,返回的是re.Matchobject.一个库内置的对象。如果没有匹配返回的是None
3.通配符
在正则表达式中,有些字符是有特殊意义的(不是转义字符的那套规则),下面介绍常用的通配符字符
1)".":点,代表任何字符,除了换行(newline)
re.search(r'Co.k.e','Cookie').group()
其中group()函数返回匹配的字符,返回类型是str
'Cookie'
2)"\w"反斜杠小写w,代表任何单个字母,数字,下划线
re.search(r'Co\wk\we','Cookie').group()
'Cookie'
3)"\W"反斜杠大写W,代表任何2)中没有代表的字符
re.search(r'C\Wke','C@ke').group()
'C@ke'
4)"\s"反斜杠小写s,代表一些空格字符,比如空格(space),换行(newline),跳格键(tab),回车(return)
re.search(r'Eat\scake','Eatcake').group()
'Eatcake'
5)"\S"反斜杠大写S,代表任何4)中没有代表的字符
re.search(r'Cook\Se','Cookie').group()
'Cookie'
6)"\t"反斜杠小写t,代表跳格键(tab)
7)"\n"反斜杠小写t,代表换行(newline)
8)"\r"反斜杠小写t,代表回车(return)
9)"\d"反斜杠小写d,代表单个数字0-9
re.search(r'c\d\dkie','c00kie').group()
'c00kie'
10)"^"这个键不知道叫什么,代表从字符开头要匹配
re.search(r'^Eat','Eatcake').group()
'Eat'
11)"$"美元符号,代表从字符结尾要匹配
re.search(r'cake$','Eatcake').group()
'cake'
12)"[abc]"中括号中任意字符,代表匹配其中任意字符
常用的方式,比如[a-zA-Z0-9],或者如果中括号中第一个字符是"^",代表不是这个范围内的字符
re.search(r'Number:[0-6]','Number:5')
再来个不在范围内的
re.search(r'Number:[^0-6]','Number:7')
4.重复
第三部分介绍了单个通配符,那么怎么定义一串通配符呢,利用一些重复的标志
1)"+"加号,表示在它左边的字符出现一次或者多次
re.search(r'Co+kie','Cooookie')
2)"*"乘号,表示在它左边的字符出现零次或者多次
re.search(r'Ca*o*kie','Caokie').group()
'Caokie'
3)"?"问号,表示在它左边的字符出现零次或者一次
re.search(r'Colou?r','Color').group()
'Color'
4){x}大括号加数字,重复确切几次
5){x,}重复至少几次
6){x,y}重复至少x次,不超过y次
re.search(r'\d{9,10}','0987654321').group()
'0987654321'
5.分组
比如说想定义一个email的格式,@之前的是一个规则,之后的是一个规则,那么通过()圆括号来分为两组,分别定义在一个正则表达式中
然后如果满足的话,通过group()函数指定返回哪一组的结果
比如
email_address='Pleasecontactusat:support@datacamp.com' match=re.search(r'([\w+-]+)@([\w\.-]+)','tw7613781@gmail.com') ifmatch: print(match.group())#Thewholematchedtext print(match.group(1))#Theusername(group1) print(match.group(2))#Thehost(group2)
tw7613781@gmail.com tw7613781 gmail.com
@前为第一部分,\w代表代表任何单个字母,数字,下划线,上面已经介绍了,然后就是"\w"和"+"和"-"随便哪一个至少一个或者多个
@后为第二部分,其余一样,就是多了个"\.",因为"."代表的是任意字符了,如果想表达真正的点,用"\."来表示。
6.python库函数re的常用函数
1)re.search(pattern,string)和re.match(pattern,string)
区别在于search能从string中寻找任何满足pattern的substring,但是match必须从头开始
pattern="cookie" sequence="Cakeandcookie" re.search(pattern,sequence).group()
'cookie'
如果是match会返回None
2)re.findall(pattern,string)
寻找string所有满足pattern的substring,然后以list的形式返回
email_address="Pleasecontactusat:support@datacamp.com,xyz@datacamp.com" #'addresses'isalistthatstoresallthepossiblematch addresses=re.findall(r'[\w\.-]+@[\w\.-]+',email_address) foraddressinaddresses: print(address)
support@datacamp.com xyz@datacamp.com
3)re.compile(pattern)
通过compile函数会生成一个pattern对象,这个pattern对象可以直接使用match,search等函数
In:pattern=re.compile(r"cookie") In:pattern Out:re.compile(r'cookie',re.UNICODE) In:pattern.search('cookie') Out:
学习材料
https://www.datacamp.com/community/tutorials/python-regular-expression-tutorial
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。