正则表达式
概述
- 正则表达式其实就是一个字符串,使用这个字符串来进行描述某个语法规则搜索的模式
- python 自1.5版本增加了re模块,它提供Perl风格的正则表达式模式
- “re 模块”使 Python 语言拥有全部的正则表达式功能。
- import re
- re模块提供了与这些方法功能完全一致的函数,这些函数使用一个模式的字符串作为他们的第一个参数。
匹配单个字符
. 匹配除换行符以外的任意字符
[] 字符集合,表示匹配[]中任意一个字符
[0-9] 表示匹配任意的数字
[a-z] 表示匹配所有小写字母
[A-Z] 表示匹配所有的大写字母
[0-9a-zA-Z_] 表示匹配数字字母下划线
[^0-9] 非数字。^在[]括号中表示“脱字节” ([^0-9] 这里表示脱离数字,即非数字)
\d 表示匹配数字,效果同[0-9]
\D 表示匹配非数字,效果同[^0-9]
\w 表示匹配数字字母下滑线,效果同[0-9a-zA-Z_]
\W 表示匹配非数字字母下滑线,效果同[^0-9a-zA-Z_]
\s 表示匹配空白符效果同[ \r\n\f\t]
\S 表示非匹配空白符效果同[^ \r\n\f\t]
边界匹配
^ 行首匹配,从每一行的开始进行匹配
$ 行尾匹配,匹配每一行的结束
\A 匹配字符串的开始,与^的区别是,即使在re.M的模式下,也不会匹配其他的行首
\Z 匹配字符串的结束,与$的区别是,即使在re.M的模式下,也不会匹配其他的行尾
\b 匹配单词的边界 \b写在左边匹配左边界,写在右边匹配右边界
\B 匹配单词的非边界 写在左边,左边界不匹配,写在右边右边界不匹配
匹配多个字符
(xyz) 将括号中的内容作为一个整体来进行匹配
x?匹配0个或者1个x 尽可能少的匹配 (懒惰匹配)
x* 匹配0个或者多个x 贪婪匹配,尽可能多的匹配 (贪婪匹配)
x+ 匹配至少一个,贪婪匹配,尽可能多的匹配
x{n} 匹配确定的n个x
x{n,} 匹配至少n个x 贪婪匹配
x{n,m} 匹配至少n个最多m个x
e.g.
2.
3.
4.
常用正则函数
import re
re.compile()
- re.compile(pattern,flags)
参数一:正则表达式
参数二:标志位(用于修改正则表达式的匹配方式,如是否区分大小写,多行匹配等等)
功能:将正则表达式编译成一个正则对象然后返回。调用的时候调用正则对象即可。
re.match()
- re.match(pattern,string,flags)
参数一:正则表达
参数二:string
参数三:标志位
功能:对string从字符串开始进行匹配,若匹配的上则返回匹配成功的对象,若匹配不上则返回None
注意:这并不是一个完全匹配,若匹配成功之后,string有剩余仍然匹配成功,若要完全匹配,可以在正则的末尾添加$即可
re.search()
- re.search(pattern,string,flags)
参数一:正则表达式
参数二:字符串
参数三:标志位
功能:以指定的正则格式在string进行查找若找到则直接返回第一匹配成功的对象,不再继续匹配。若找不到返回None
re.findall()
- re.findall(pattern,string,flags)
功能:以指定的正则表达式去string中进行匹配,把所有匹配的结果作为list返回。若没有匹配上则返回空列表。
re.finditer()
- re.finditer(pattern,string,flags)
功能:以指定的正则表达式去string中进行匹配,把所有匹配的结果作为迭代器返回.
re.split()
- re.split(pattern,string,maxsplit,flags)
功能:以指定的正则对string进行切片,并且将切片后的结果作为列表返回。
(maxsplit:指定最大切片次数,若不指定,全部切片)
re.sub()
- re.sub(pattern,repl,string,count)
功能:将匹配到的字符以指定的repl进行替换并且返回替换后的结果
(count:指定替换次数,若不指定则默认全部替换)