re.match函数

原型: match(pattern,string,flags=0)
  • pattern:匹配的正则表达式
  • string:要匹配的字符串
  • flags:标志位,用于控制正则表达式的匹配方式

re.I: 忽略大小写
re.L 做本地户识别
re.M 多行匹配,影响^和¥
re.S 是.匹配包括换行符在内的所有字符
re.U 根据Unicode字符集解析字符,影响\w \W \b \B
re.X 是我们以更灵活的格式理解正砸表达式

参数:
功能:

尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,返回None

re.search函数

原型: search(pattern,string,flags=0)
  • pattern:匹配的正则表达式
  • string:要匹配的字符串
  • flags:标志位,用于控制正则表达式的匹配方式
功能:

扫描整个字符串,并返回第一个成功的匹配

print(re.search("sunck", "good man is sunck! sunck is nice")

re.findall函数

原型: search(pattern,string,flags=0)
  • pattern:匹配的正则表达式
  • string:要匹配的字符串
  • flags:标志位,用于控制正则表达式的匹配方式
功能:

扫描整个字符串,并返回结果列表

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

[]是字符集合,表示匹配方括号中所包含的任意一个字符

[0123456789] 匹配0~9之间的任意一个数字
[sunck] 匹配’s’,‘u’,‘n’,‘c’,'k’中的任意一个字符
[a–z] 匹配任意小写字母
[A–Z] 匹配人以大写字母
[0–9] 匹配任意数字
[0–9a–zA–Z_] 匹配任意数字和字母,和下划线
[^sunck] 匹配除了这几个字母之外的所有字符
^ 称为脱字符,表示不匹配集合中的字符
[^0–9] 匹配所有的非数字字符

\d 同[0–9]
\D 同[^0–9]
\w 同[0–9a–zA–Z]
\W 同[^0–9a–zA–Z]
\s 匹配任意的空白符(空格,换行,回车,换页,制表)效果如同[ \f\n\r\t]

锚字符

^ 行首匹配,和在[]中的^ 不是一个意思,并且在每行的行首进行匹配
$ 行尾匹配
\A 匹配字符串的开始,他和^ 的区别是,\A 只匹配整个字符串的开头,即使在 re.M模式下也不会匹配他行的行首

\Z 匹配字符串的开始,他和$ 的区别是,\Z 只匹配整个字符串的结尾,即使在 re.M模式下也不会匹配他行的结尾

匹配多个字符

说明:下方的x,y,z均为假设的普通字符,不是正则表达式的元字符

(xyz) 匹配小括号内的xyz(作为一个整体去匹配)
x? 匹配0个或者1个x
x* 匹配0个或者任意多个x
x+ 匹配至少一个x
x{n} 匹配确定的n个x (n是一个非负整数)
x{n, } 匹配至少的n个x
x{n,m} 匹配至少n个最多m个。注意:n<=m

print(re.findall(r"a?", "aaa")) #非贪婪匹配(尽可能少的匹配)
print(re.findall(r"a*", "aaabaa"))#贪婪匹配(尽可能多的匹配)
print(re.findall(r"a+", "aaabaa"))#贪婪匹配(尽可能多的匹配)
print(re.findall(r"a{3}", "aaabaa"))#贪婪匹配(尽可能多的匹配)