python正则表达式基础之re模块
一、正则表达式
re模块是python独有的匹配字符串的模块,该模块中提供的很多功能是基于正则表达式实现的,而正则表达式是对字符串进行模糊匹配,提取自己需要的字符串部分,他对所有的语言都通用。注意:
- re模块是python独有的
- 正则表达式所有编程语言都可以使用
- re模块、正则表达式是对字符串进行操作
因为,re模块中的方法大都借助于正则表达式,故先学习正则表达式。
二、常用正则表达式
2.1 元字符
元字符
|
匹配内容说明 |
. | 匹配除换行符以外的任意字符 |
\w | 匹配字母或数字或下划线 |
\s | 匹配任意的空白符 |
\d | 匹配数字 |
\n | 匹配一个换行符 |
\t | 匹配一个制表符 |
\b | 匹配一个单词的结尾 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
\W | 匹配非字母或数字或下划线 |
\D | 匹配非数字 |
\S | 匹配非空白符 |
a|b | 匹配字符a或字符b |
() | 匹配括号内的表达式,也表示一个组 |
[] | 匹配字符组中的字符 |
[^] |
匹配除了字符组中字符的所有字符 |
2.2 量词
量词 | 用法说明 |
* | 重复零次或更多次 |
+ | 重复一次或更多次 |
? | 重复零次或一次 |
{n} | 重复n次 |
{n,} | 重复n次或更多次 |
{n,m} | 重复n到m次 |
三、正则表达式的使用
3.1 . ^ $
正则 | 待匹配字符 | 匹配结果 | 说明 |
a. | abacad | abacad | 匹配所有"a."的字符 |
^a. | abacad | ab | 只从开头匹配"a." |
a.$ | abacad | ad | 只匹配结尾的"a.$" |
3.2 * + ? { }
正则 | 待匹配字符 | 匹配结果 | 说明 |
a.? | abefacgad | ab ac ad |
?表示重复零次或一次,即只匹配"a"后面一个任意字符。 |
a.* | abefacgad |
abefacgad |
*表示重复零次或多次,即匹配"a"后面0或多个任意字符。 |
a.+ | abefacgad | abefacgad | +表示重复一次或多次,即只匹配"a"后面1个或多个任意字符。 |
a.{1,2} | abefacgad | abe acg ad |
{1,2}匹配1到2次任意字符。 |
注意:前面的*、+、?等都是贪婪匹配,也就是尽可能匹配,后面加?号使其变成惰性匹配
正则 | 待匹配字符 | 匹配结果 | 说明 |
a.*? | abefacgad | a a a |
惰性匹配 |
3.3 字符集[][^]
正则 | 待匹配字符 | 匹配结果 | 说明 |
a[befcgd]* | abefacgad | abef acg ad |
表示匹配"a"后面[befcgd]的字符任意次
|
a[^f]* | abefacgad | abe acgad |
表示匹配一个不是"f"的字符任意次
|
[\d] | 412a3bc | 4 1 2 3 |
表示匹配任意一个数字,匹配到4个结果
|
[\d]+ | 412a3bc | 412 3 |
表示匹配任意个数字,匹配到2个结果
|
四、re模块代码基础函数介绍
- re.compile(pattern,flags = 0 ):用于编译正则表达式,生成一个正则表达式对象
- re.search(pattern,string,flags = 0 ):扫描整个字符串并返回第一个成功的匹配
- 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 ):返回字符串中所有不重叠匹配项的列表,如果没有匹配到返回空list不会报错
- re.finditer(pattern,string,flags = 0 ):返回一个迭代器,该迭代器在string类型的RE 模式的所有非重叠匹配中产生匹配对象。
- re.sub(pattern,repl,string,count = 0,flags = 0 ):返回通过用替换repl替换字符串中最左边的不重叠模式所获得的字符串。