1、re.match函数
原型:match(pattern, string, flags=0)
参数:patter: 匹配的正则表达式
string: 要匹配的字符串
flags:标志位,用于控制正则表达式的匹配方式,值如下:
re.I 忽略大小写
re.L 做本地户识别
re.M 多行匹配,影响^和$
re.S 是.匹配包括换行符在内的所有字符
re.U 根据Unicode字符集解析字符,影响\w \W \b \B
re.X 使我们以更灵活的格式理解正则表达式
功能:尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,返回None。扫描整个字符串,返回从起始位置成功的匹配
2、re.search函数
原型:search(pattern, string, flags=0)
参数:patter: 匹配的正则表达式
string: 要匹配的字符串
flags:标志位,用于控制正则表达式的匹配方式
功能:扫描整个字符串,并返回第一个成功的匹配
3、re.findall函数
原型:findall(pattern, string, flags=0)
参数:patter: 匹配的正则表达式
string: 要匹配的字符串
flags:标志位,用于控制正则表达式的匹配方式
功能:扫描整个字符串,并返回结果列表
4、re.split()字符串切割
str1 ="This is a test"
print(re.split(r" +", str1))
5、re.finditer函数
原型:finditer(pattern, string, flags=0)
参数:patter: 匹配的正则表达式
string: 要匹配的字符串
flags:标志位,用于控制正则表达式的匹配方式
功能:与findall类似,扫描整个字符串,返回的是一个迭代器
6、字符串的替换和修改
re.sub(pattern, repl, string, count=0)
re.subn(pattern, repl, string, count=0)
pattern: 正则表达式(规则)
repl: 指定的用来替换的字符串
string: 目标字符串
count: 最多替换次数
功能:在目标字符串中以正则表达式的规则匹配字符串,再把他们替换成指定的字符串。可以指定替换的次数,如果不指定,替换所有的匹配字符串
区别:前者返回一个被替换的字符串,后者返回一个元组,第一个元素被替换的字符串,第二个元素表示被替换的次数
7、分组
除了简单的判断是否匹配之外,正则表达式还有提取子串的功能。用()表示的就是提取分组
str1 ="010-53247654"
m = re.match(r"(?P\d{3})-(?P\d{8})", str1)
#使用序号获取对应组的信息,group(0)一直代表的原始字符串
print(m.group(0))
print(m.group(1))
print(m.group("first"))
print(m.group(2))
#查看匹配的各组的情况
print(m.groups())
8、编译:
当我们使用正则表达式时,re模块会干两件事
(1)、编译正则表达式,如果正则表达式本身不合法,会报错
(2)、用编译后的正则表达式去匹配对象
compile(pattern, flags=0)
pattern:要编译的正则表达式
示例:
pat =r"^1(([3578]\d)|(47))\d{8}$"
print(re.match(pat, "13687872525"))
#编译成正则对象
re_telephon = re.compile(pat)
print(re_telephon.match("13687872525"))