一、贪婪和非贪婪
非贪婪:
在正则表达式中控制匹配不确定次数的符号后边可以加?,来表示尽可能少的匹配。
在贪婪的时候,匹配是尽可能多的匹配。
注意:尽可能少是在能够匹配到的前提下尽可能少
以下都是贪婪匹配:
- *
- +
- ?
- {M,N}
- {M,}
- {,N}
import re
a = re.findall(r"a(\d+?)", 'a23b')
print(a) # ['2']
b = re.findall(r"a(\d+)", 'a23b')
print(b) # ['23']
二、re模块
1、complie(正则表达式)
将正则表达式转换成对象,编译后直接调用对象方法
2、fullmatch(正则表达式, 字符串)
正则表达式和字符串匹配,匹配成功返回对象,失败返回None。用途:检测账号,密码等
import re
re_str = r'(\d\d)\.([a-z]+)'
result = re.fullmatch(re_str, '12.adsf')
返回对象
a、span()
匹配到字符串在原字符串中的下标范围(结果是元祖)
b、star()和end()
匹配到的字符串在元字符中的开始下标和结束下标
c、group()
获取匹配到的字符串(结果是字符串)
d、string
获取原字符串
3、match(正则表达式, 字符串)
让字符串的开头和正则表达式匹配,匹配成功结果是匹配对象,否则是None
4、search(正则表达式, 字符串)
在字符串中匹配出一个符合正则表达式的子串,匹配成功结果是对象,否则是None
5、split(正则表达式, 字符串)
将字符串按照满足正则要求的子串进行切割(返回值是列表)
6、sub(正则表达式, 字符串1, 字符串2)
将字符串2中能够和正则表达式匹配的子串替换成字符串1,产生一个新的字符串
7、findall(正则表达式, 字符串)
在字符串中获取满足正则表达式的所有字符串(结果是列表)
注意:如果正则表达式有分组,直接获取到的是分组中匹配到的内容;如果有多个分组列表中的元素是元祖
8、finditer(正则表达式, 字符串)
在字符串中获取满足正则表达式的所有的子串(结果是迭代器)
9、re.I
匹配的时候忽略大小写,匹配的约束条件是放在flags参数中的。
print(re.fullmatch(r'[a-z]{2}', 'SA', re.I))
网友评论