python自学之路(六)正则

正则

使用:

import re
re.match(pattern,string,flags = 0)
pa = re.match('love','i love you')  //从头开始匹配
pa.group()  //匹配对象
pa.span() //匹配位置元组
功能:从第一个字符开始匹配 不符合返回None

re.search(pattern,string,flags = 0)
pa =re.search('love','i love you')
功能:扫描整个字符串  返回值是第一个出现的

findall(pattern,string,flags = 0)
功能:查找整个字符串 结果返回列表

compile 
功能:正则表达式是否正确

单字符

==.== 匹配除换行符以外的任意字符

==[]== 匹配集合也就是[]里的任意一个字符

==a-z== 匹配除a-z之外的字符

==^== 边界符 以..开始

==$== 边界符 以..结束

==[a-zA-Z0-9]== 匹配数字字母

==\d== 匹配的是数字

==\D== 匹配非数字

==\w== 匹配数字字母下划线

==\W== 匹配非数字字母下划线

==\s== 匹配空字符

==\S== 除空白字符外的任意字符

=={n}== 修饰元字符前边的单字符n次

=={n,}== 修饰元字符前边的单字符出现至少n次

=={n,m}== 修饰元字符前边的单字符出现 >=n <=m次

=={,n}== 修饰元字符出现次数是0-n

==+== 修饰元字符前单字符至少出现1次

==*== 匹配的可以是0次货任意多次

==?== 匹配一次或0次

==\b== 词边界 \W隔开的都是词边界

==\B== 非词边界

r'\w' 修饰正则表达式时意义和修饰字符串时意义不同 
修饰字符串的时候是失去转义字符的意义
在正则里 是不进行转义

分组和子模式

==()== 子模式

==\num== 将num次()中匹配到的值作为匹配字符

\w \S可以匹配中文

了解: (?P) (?P=name)

贪婪模式

正则表达式默认贪婪模式

常用的非贪婪模式

==+?==

==*?==

表达式修饰符

re.I 无视字符大小

re.M 视为多行

re.S 视为单行

正则函数

sub 替换

sub(字符串,源字符串)
reg = re.compile(r'\d'')
res = reg.sub('aa','woyi12')
print(res)   //woyaa

注:

  1. 使用findall匹配时 正则表达式中的()为捕获型 获取匹配到的结果中的小括号内容
  2. (?:) 非捕获型括号 匹配pattern 但是不捕获

正则迭代器

res = re.finditer('\d','12345')
print(next(res).group())  //1
print(next(res).group())  //2
print(next(res).group())  //3

猜你喜欢

转载自blog.csdn.net/weixin_42042680/article/details/80056134