前言
勤奋的含义是今天的热血,而不是明天的决心,后天的保证。
一、正则表达式是什么?
- 描述了一种字符串匹配的模式(pattern)
- 功能一:用来检查一个字符串串是否含有某种子字符串
- 功能二:将匹配的子串(满足规则的字符串)进行替换
- 功能三:从某个字符串中取出符合某个条件的子
- ......
二、re模块简介
- re模块是python独有的匹配字符串的模块
- 该模块中的很多功能是基于正则表达式实现的
- Python自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式
三、正则表达式基础语法
需要使用re模块,必须对正则表达式有一定的掌握,以下先介绍正则的一些基础知识。
3.1 正则表达式中的元字符
元字符 | 匹配内容说明 |
---|---|
. | 匹配除换行符以外的任意字符 |
\w | 匹配字母或数字或下划线 |
\s | 匹配任意的空白符 |
\d | 匹配数字 |
\n | 匹配一个换行符 |
\t | 匹配一个制表符 |
\b | 匹配一个单词的结尾 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
\W | 匹配非字母或数字或下划线 |
\D | 匹配非数字 |
\S | 匹配非空白符 |
a|b | 匹配字符a或字符b |
() | 匹配括号内的表达式,也表示一个组 |
[] | 匹配字符组中的字符 |
[^] | 匹配除了字符组中字符的所有字符 |
3.2 正则表达式中的量词
量词 | 用法说明 |
---|---|
* | 重复零次或更多次 |
+ | 重复一次或更多次 |
? | 重复零次或一次 |
重复n次 | |
重复n次或更多次 | |
重复n到m次 |
四、re模块代码基础及应用
4.1 re模块中的函数介绍
- re.compile(pattern,flags = 0 ):用于编译正则表达式,生成一个正则表达式对象
- re.search(pattern,string,flags = 0 ):扫描字符串以查找正则表达式模式产生匹配项的第一个位置 ,然后返回相应的match对象。
- re.match(pattern,string,flags = 0 ):如果字符串开头的零个或多个字符与正则表达式模式匹配,则返回相应的匹配对象。
- re.fullmatch(pattern,string,flags = 0 ):如果整个字符串与正则表达式模式匹配,则返回相应的match对象。
- re.split(pattern,string,maxsplit = 0,flags = 0 ):通过出现模式来拆分字符串。
- re.findall(pattern,string,flags = 0 ):以string列表形式返回string中pattern的所有非重叠匹配项。
- re.finditer(pattern,string,flags = 0 ):返回一个迭代器,该迭代器在string类型的RE 模式的所有非重叠匹配中产生匹配对象。
- re.sub(pattern,repl,string,count = 0,flags = 0 ):返回通过用替换repl替换字符串中最左边的不重叠模式所获得的字符串。
4.2 re模块 macth方法 基础写法一
import re
#group()方法得到匹配的字符串,如果字符串没有匹配,则返回None
value = re.match( 'class\d8' , 'class58' ).group()
print( value )
4.3 re模块 macth方法 基础写法二
import re
#创建正则表达式对象
str_c = re.compile('class\d8')
#group()方法得到匹配的字符串,如果字符串没有匹配,则返回None
value = str_c.match('class58').group()
print( value )
上述代码说明:上述两种写法都可以完成 re模块 的应用,4.2的例子是直接把正则表达式放入match的第一个参数中;4.3的例子是先创建正则表达式对象,由对象进行match方法的调用。
4.4 re模块 search方法 基础
import re
#创建正则表达式对象
str_c = re.compile('\d8')
value = str_c.search('class58').group()
print( value )
上述代码说明:如果吧search()改为match()方法,则会报错,因为 match()仅在字符串的开头匹配,search()检查匹配项,在字符串中的任何位置检查匹配项
五、小结
- 学习re模块需要先有正则表达式的知识做铺垫
- 上述由于篇幅原因,关于其它的正则表达式的应用读者可以根据我的例子去进行扩展