re 模块 正则表达式

一、什么是正则表达式

正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法。或者说:正则就是用来描述一类事物的规则。(在Python中)它内嵌在Python中,并通过 re 模块实现。正则表达式模式被编译成一系列的字节码,然后由用 C 编写的匹配引擎执行。

二、正则表达式基础

字符组 : [字符组]

在同一个位置可能出现的各种字符组成了一个字符组,在正则表达式中用[]表示 字符分为很多类,比如数字、字母、标点等等。

1 [1]                       匹配1
2 [123]        匹配1、2、3
3 [0-9]       匹配任意一个数字
4 [a-z]       匹配任意一个小写字母
5 [A-Z]       匹配任意一个大写字母
6 [A-Za-z]      匹配任意一个字母

示例如下:

1 print(re.findall(‘[1]‘,‘Zll5201314‘))       #[‘1‘, ‘1‘]
2 print(re.findall(‘[123]‘,‘Zll5201314‘))     #[‘2‘, ‘1‘, ‘3‘, ‘1‘]
3 print(re.findall(‘[0-9]‘,‘Zll5201314‘))     #[‘5‘, ‘2‘, ‘0‘, ‘1‘, ‘3‘, ‘1‘, ‘4‘]
4 print(re.findall(‘[a-z]‘,‘Zll5201314‘))     #[‘l‘, ‘l‘]
5 print(re.findall(‘[A-Z]‘,‘Zll5201314‘))     #[‘Z‘]
6 print(re.findall(‘[a-zA-Z]‘,‘Zll5201314‘))  #[‘Z‘, ‘l‘, ‘l‘]
7 print(re.findall(‘[A-Za-z0-3]‘,‘Zll5201314‘)) #[‘Z‘, ‘l‘, ‘l‘, ‘2‘, ‘0‘, ‘1‘, ‘3‘, ‘1‘]

元字符:

 1 .    匹配除换行符以外的任意字符
 2 \w    匹配字母或者数字或者下划线
 3 \s     匹配任意空白字符
 4 \d     匹配数字
 5 \n     匹配换行符
 6 \t    匹配制表符tab
 7 \b    匹配一个单词的结尾
 8 ^    匹配字符串的开始
 9 $    匹配字符串的结尾
10 \W   匹配非字母或下划线或数字
11 \D   匹配非数字
12 \S   匹配非空白符
13 |    匹配|前或者后的内容
14 ()    匹配括号内的表达式,也表示一个组

示例如下:

 1 print(re.findall(‘.‘,‘love_u 520‘)) #[‘l‘, ‘o‘, ‘v‘, ‘e‘, ‘_‘, ‘u‘, ‘ ‘, ‘5‘, ‘2‘, ‘0‘]
 2 print(re.findall(‘\w‘,‘love_u 520‘)) #[‘l‘, ‘o‘, ‘v‘, ‘e‘, ‘_‘, ‘u‘, ‘5‘, ‘2‘, ‘0‘]
 3 print(re.findall(‘\s‘,‘love_u 520‘)) #[‘ ‘]
 4 print(re.findall(‘\d‘,‘love_u 520‘)) #[‘5‘, ‘2‘, ‘0‘]
 5 print(re.findall(‘\n‘,‘love_u 520‘)) #[]
 6 print(re.findall(‘\b‘,‘love_u 520‘)) #[]
 7 print(re.findall(‘^l‘,‘love_u 520‘)) #[‘l‘]
 8 print(re.findall(‘520$‘,‘love_u 520‘))#[‘520‘]
 9 print(re.findall(‘\W‘,‘love_u 520‘)) #[‘ ‘]
10 print(re.findall(‘\D‘,‘love_u 520‘)) #[‘l‘, ‘o‘, ‘v‘, ‘e‘, ‘_‘, ‘u‘, ‘ ‘]
11 print(re.findall(‘\S‘,‘love_u 520‘)) #[‘l‘, ‘o‘, ‘v‘, ‘e‘, ‘_‘, ‘u‘, ‘5‘, ‘2‘, ‘0‘]
12 print(re.findall(‘love|u‘,‘love_u 520‘)) #[‘love‘, ‘u‘]

量词:

1 *   重复零次或者多次
2 +  重复1次或者多次
3 ?  重复零次或者一次
4 {n}  重复n次
5 {n,}  重复n次或者更多次
6 {n,m}  重复n到m次

示例如下:

1 print(re.findall(‘5*‘,‘555 5‘)) #[‘555‘, ‘‘, ‘5‘, ‘‘]
2 print(re.findall(‘5+‘,‘555 5‘)) #[‘555‘, ‘5‘]
3 print(re.findall(‘5?‘,‘555 5‘)) #[‘5‘, ‘5‘, ‘5‘, ‘‘, ‘5‘, ‘‘]
4 print(re.findall(‘5{2,3}‘,‘555 5‘)) #[‘555‘]
5 print(re.findall(‘5{2}‘,‘555 5‘)) #[‘55‘]
6 print(re.findall(‘5{3}‘,‘555 5‘)) #[‘555‘]

三、常见的正则表达式应用

1 手机号(国内):^[1-9][3478]\d{9}
2 电话号(国内):[0-9-()()]{7,18}
3 邮编:\d{6}
4 QQ:[1-9]([0-9]{5,11})
5 身份证号:\d{17}[\d|x]|\d{15}
6 邮箱:\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}
7 网址:^((https|http|ftp|rtsp|mms)?:\/\/)[^\s]+
8 日期:\d{4}(\-|\/|.)\d{1,2}\1\d{1,2}
9 用户名:[A-Za-z0-9_\-\u4e00-\u9fa5]+

#正则表达式在线测试网址“http://tool.chinaz.com/regex/”

四、python中如何使用正则表达式

findall()方法:

此方法是在整个字符串中匹配指定字符或者字符串,并且将所有满足条件的结果返回到一个列表中,如下:

1 ret = re.findall(‘a‘,‘abac‘)
2 print(ret)  #[‘a‘, ‘a‘]
3 ret = re.findall(‘ab‘,‘abac‘)
4 print(ret)  #[‘ab‘]

search()方法:

此方法是在整个字符串中查找满足匹配条件的字符或者字符串,一旦找到一个就不再继续查找,并返回包含查找值的对象,可以用.group()方法进行查看,如下:

1 ret = re.search(‘a‘,‘abac‘)
2 print(ret.group())  #a

match()方法:

此方法是用来从开头位置查找是否满足匹配条件,如果没有就会返回None,如果有,则会返回一个包含查找值的对象,可以用group()方法进行查看,如下:

1 ret = re.match(‘a‘,‘abac‘)
2 print(ret.group())  #a
3
4 ret = re.match(‘b‘,‘abac‘)
5 print(ret)  #None

split()方法:

此方法用来对一个字符串进行切分,如下:

1 ret = re.split(‘[ab]‘, ‘abcd‘)  # 先按‘a‘分割得到‘‘和‘bcd‘,在对‘‘和‘bcd‘分别按‘b‘分割
2 print(ret)  # [‘‘, ‘‘, ‘cd‘]

sub()以及subn()方法:

1 ret = re.sub(‘\d‘, ‘*‘, ‘a1b2c3‘)#将数字替换成‘*‘,默认替换所有的数字
2 print(ret) #a*b*c*
3
4 ret = re.sub(‘\d‘, ‘*‘, ‘a1b2c3‘, 1)#将数字替换成‘*‘,参数1表示只替换1个
5 print(ret) #a*b2c3
6
7 ret = re.subn(‘\d‘, ‘*‘, ‘a1b2c3‘)#将数字替换成‘*‘,返回一个元祖(替换后的字符串,替换的次数)
8 print(ret) #(‘a*b*c*‘, 3)

compile()方法:

此方法是先把正则表达式编译好,以方便多次使用,如下:

1 obj = re.compile(‘\d{3}‘)  #将正则表达式编译成为一个 正则表达式对象,规则要匹配的是3个数字
2 ret = obj.search(‘abc123eeee‘) #正则表达式对象调用search,参数为待匹配的字符串
3 print(ret.group())  #结果 : 123
finditer()方法:此方法与findall类似,只不过返回的不是一个列表,而是一个生产器,可以用next(iter).group()来查看里面的值,如下:
1 ret = re.finditer(‘\d‘, ‘ds3sy4784a‘)   #finditer返回一个存放匹配结果的迭代器
2 print(ret)  # <callable_iterator object at 0x10195f940>
3 print(next(ret).group())  #查看第一个结果
4 print(next(ret).group())  #查看第二个结果
5 print([i.group() for i in ret])  #查看剩余的左右结果

原文地址:https://www.cnblogs.com/jiangchunsheng/p/8279147.html

时间: 2024-10-12 15:57:55

re 模块 正则表达式的相关文章

re模块正则表达式

引子 请从以下文件里取出所有的手机号 姓名 地区 身高 体重 电话 况咏蜜 北京 171 48 13651054608 王心颜 上海 169 46 13813234424 马纤羽 深圳 173 50 13744234523 乔亦菲 广州 172 52 15823423525 罗梦竹 北京 175 49 18623423421 刘诺涵 北京 170 48 18623423765 岳妮妮 深圳 177 54 18835324553 贺婉萱 深圳 174 52 18933434452 叶梓萱 上海 1

2018-06-27-Python全栈开发day22-part2-xml模块和re模块-正则表达式介绍

1.xml模块 xml模块是在json出现之前,普遍使用的文件类型, <data> <country name="Liechtenstein"> <rank updated="yes">2</rank> <year updated="yes">2010</year> <gdppc>141100</gdppc> <neighbor directio

常用模块--- 正则模块 正则表达式 re 模块

# 正则模块# 正则表达式# re模块 #--------------------------------------- time -----------------------------------------# 计算时间差# 做时间格式的转换 # 所有的模块要经历的两个步骤 # 要操作的概念本身 : 正则表达式 时间 # 使用模块去操作它 : re time # 学习 正则表达式 本身 # 什么是正则表达式 # 一种匹配字符串的规则 # input 一串数据 : # 是不是qq号码 : 全

Python常用模块——正则表达式re模块

Python常用模块--正则表达式re模块 引子 请从以下文件里取出所有的手机号 姓名 地区 身高 体重 电话 况咏蜜 北京 171 48 13651054608 王心颜 上海 169 46 13813234424 马纤羽 深圳 173 50 13744234523 乔亦菲 广州 172 52 15823423525 罗梦竹 北京 175 49 18623423421 刘诺涵 北京 170 48 18623423765 岳妮妮 深圳 177 54 18835324553 贺婉萱 深圳 174 5

Python之re模块 —— 正则表达式操作

这个模块提供了与 Perl 相似l的正则表达式匹配操作.Unicode字符串也同样适用. 正则表达式使用反斜杠" \ "来代表特殊形式或用作转义字符,这里跟Python的语法冲突,因此,Python用" \\\\ "表示正则表达式中的" \ ",因为正则表达式中如果要匹配" \ ",需要用\来转义,变成" \\ ",而Python语法中又需要对字符串中每一个\进行转义,所以就变成了" \\\\ &

Python全栈之路系列----之-----re模块(正则表达式)

正则表达式并不是python中的一部分,正则表达式适用于处理字符串的强大工具,拥有自己独特的语法,以及独立的处理引擎.在提供了正则表达式的语言中都它的语法是都一样的 re模块本质上和正则表达式没有一毛钱的关系,re模块是python提供给我们方便操作正则的工具而已 正则表达式概念 使用单个字符串规则来描述匹配一系列符合某个句法规则的字符串 是对字符串操作的一种逻辑公式 应用场景:处理文本和数据 正则表示是过程:依次拿出表达式和文本中的字符比较,如果每一个字符都能匹配,则匹配成功:否则匹配失败 正

17。3.12---re模块--正则表达式操作指南

1----python re模块(Regular Expressioin正则表达式)提供了一个与perl等编程语言类似的正则匹配操作,他是一个处理python字符串的强有力的工具,有自己的语法和独立的处理引擎,几乎所有的编程语言中,正则表达式的语法都是一样的,区别在于他们支持的正则表达式的数量不一样 2---re 正则表达式语法 1) . 匹配任意换行符,也就是"\n"以外的任何字符 \ 转义符,改变原来符号含义, []       中的括号用来创建一个字符集,第一个出现的字符如果是^

Python re模块 正则表达式

1 简介 就其本质而言,正则表达式(或 RE)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现.正则表达式模式被编译成一系列的字节码,然后由用 C 编写的匹配引擎执行. 正则表达式是一种用来匹配字符串的强有力的武器.它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的.

Python3 学习第十三弹: 模块学习六之re模块 + 正则表达式 (转)

本文转自 AstralWind 的博客:Python正则表达式指南 特来收藏 1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大.得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同:但不用担心,不被支持的语法通常是不常用的部分.如果已经在其他语言里使用过正则表达式,只需要简单看

Python之re模块 - 正则表达式操作

一.前言 字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在.而正则表达式就是一种用来描述字符串的强有力的武器.它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它"匹配"了,否则,该字符串就是不合法的. 学习本章知识,你需要有了解正则表达式基础, 网上快速入门教程一抓一大把,这里就不再叙述了. 二.re 模块 Python 的 re 模块提供了与 Perl 相似的正则表达式匹配操作, Unicode 字符串也同样适用.