python 正则表达式语法大全(python re库的正则表达式入门学习教程)
python 正则表达式语法大全
python re库的正则表达式入门学习教程简介
正则表达式本身是一种小型的、高度专业化的编程语言,而在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 object ; span = ( 0 , 6 ), match = 'Cookie' > |
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 '^Eat' , '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.Match object ; span = ( 0 , 9 ), match = 'Number: 5' > |
再来个不在范围内的
|
re.search(r 'Number: [^0-6]' , 'Number: 7' ) |
|
<re.Match object ; span = ( 0 , 9 ), match = 'Number: 7' > |
4. 重复
第三部分介绍了单个通配符,那么怎么定义一串通配符呢,利用一些重复的标志
1) "+" 加号,表示在它左边的字符出现一次或者多次
|
re.search(r 'Co+kie' , 'Cooookie' ) |
|
<re.Match object ; span = ( 0 , 8 ), match = '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: support@datacamp.com' match = re.search(r '([\w+-]+)@([\w\.-]+)' , 'tw7613781@gmail.com' ) 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) |
|
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 = "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: support@datacamp.com, xyz@datacamp.com" #'addresses' is a list that stores all the possible match addresses = re.findall(r '[\w\.-]+@[\w\.-]+' , email_address) for address in addresses: 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: <re.Match object ; span = ( 0 , 6 ), match = 'cookie' > |
学习材料
https://www.datacamp.com/community/tutorials/python-regular-expression-tutorial
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对开心学习网的支持。
原文链接:https://www.cnblogs.com/wtang/p/10490046.html
- pythonlist类型教程(Python List cmp知识点总结)
- python中求阶乘的代码(python 阶乘累加和的实例)
- python零基础入门加密与解密(Python玩转加密的技巧推荐)
- python处理各种xml文件(Python使用sax模块解析XML文件示例)
- 闭包python讲解(详解Python循环作用域与闭包)
- 用python图片转字符串(python实现图片转字符小工具)
- Python实现合并两个有序链表的方法示例(Python实现合并两个有序链表的方法示例)
- python字典的值排序(python 对字典按照value进行排序的方法)
- 用python怎么找工作(利用python如何在前程无忧高效投递简历)
- python如何获取列表值(Python中按键来获取指定的值)
- python成绩判断系统(Python根据成绩分析系统浅析)
- python模块都是自己的语法(详解Python_shutil模块)
- python爬百度api有次数限制吗(对python借助百度云API对评论进行观点抽取的方法详解)
- python操作sql server数据库(Python 数据库操作 SQLAlchemy的示例代码)
- python字符处理的函数(Python字符串内置函数功能与用法总结)
- python详细讲解类方法的使用(浅谈python标准库--functools.partial)
- 一部手机两套系统 OPPO Find X3的正确打开方式你知道吗(一部手机两套系统)
- OPPO用户看过来 汇总几个春节实用技巧,轻松搞定多设备联动玩法(汇总几个春节实用技巧)
- 北京旅游攻略(北京旅游攻略5日游及其花费)
- 四川旅游攻略(四川旅游攻略自由行攻略)
- 上海迪士尼攻略(上海迪士尼攻略旅游)
- 哪里可以看熊猫(成都哪里可以看熊猫)
热门推荐
- dedecms怎样快速找到图片位置(dede搬家后路径变化批量替换图片路径避免图片不能正常显示)
- python分词操作(Python英文文本分词无空格模块wordninja的使用实例)
- flashfxp使用视频教程(FlashFXP 命令行参数)
- python实现将txt转化为excel(python实现Excel文件转换为TXT文件)
- mysql删除表数据的语句(Mysql实现定时清空一张表的旧数据并保留几条数据推荐)
- 服务器宕机处理方式(web服务器宕机监控方法大全)
- javascript四种数组(javascript数组includes、reduce的基本使用)
- vue 父组件传值(Vue两个同级组件传值实现)
- docker容器基础入门认知网络篇(Docker 容器生命周期 架构 以及和VM之间的差异详解)
- drools机制(Swoole实现异步投递task任务案例详解)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9