• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

python re库的正则表达式入门学习教程

python 搞代码 4年前 (2022-01-07) 14次浏览 已收录 0个评论

这篇文章主要给大家介绍了关于python re库的正则表达式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

简介

正则表达式本身是一种小型的、高度专业化的编程语言,而在python中,通过内嵌集成re模块,程序媛们可以直接调用来实现正则匹配。正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎执行。

下面话不多说了,来一起看看详细的介绍吧

1. 安装

默认已经安装好了python环境了

re库是python3的核心库,不需要pip install,直接import就行

2. 最简单的模式

字符本身就是最简单的模式

比如:’A’, ‘I love you’, ‘test’

然是注意在定义模式字符串的时候,在前面加上r,它的作用是告诉编译器,接下来的字符串是单纯的字符串,请不要转变为转义字符。

例子

 import re pattern = r'Cookie' sequence = 'Cookie' re.match(pattern, sequence)
 

re.match()是常用的函数,如果匹配,返回的是re.Match object.一个库内置的对象。如果没有匹配返回的是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),换行(new line),跳格键(tab),回车(return)

 re.search(r'Eat\scake', 'Eat cake').group()
 'Eat cake'

5) “\S” 反斜杠大写S,代表任何4)中没有代表的字符

 re.search(r'Cook\Se', 'Cookie').group()
 'Cookie'

6) “\t” 反斜杠小写t,代表跳格键(tab)

7) “\n” 反斜杠小写t,代表换行(new line)

8) “\r” 反斜杠小写t,代表回车(return)

9) “\d” 反斜杠小写d,代表单个数字0-9

 re.search(r'c\d\dkie', 'c00kie').group()
 'c00kie'

10) “^” 这个键不知道叫什么,代表从字符开头要匹配

 re.search(r'^E<em style="color:transparent">来源[email protected]搞@^&代*@码)网</em>at', 'Eat cake').group()
 'Eat'

11) “$” 美元符号,代表从字符结尾要匹配

 re.search(r'cake$', 'Eat cake').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 = 'Please contact us at: [email protected]' match = re.search(r'([\w+-]+)@([\w\.-]+)', '[email protected]') if match: print(match.group()) # The whole matched text print(match.group(1)) # The username (group 1) print(match.group(2)) # The host (group 2)
 [email protected] 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 = "Cake and cookie" re.search(pattern, sequence).group()
 'cookie'

如果是match会返回None

2) re.findall(pattern, string)

寻找string所有满足pattern的substring,然后以list的形式返回

 email_address = "Please contact us at: [email protected], [email protected]" #'addresses' is a list that stores all the possible match addresses = re.findall(r'[\w\.-]+@[\w\.-]+', email_address) for address in addresses: print(address)

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

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对gaodaima搞代码网的支持。

以上就是python re库的正则表达式入门学习教程的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:python re库的正则表达式入门学习教程

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址