import re
#pip 包管理模块
'''
1:re.match函数
原型:match(pattern, string, flags=0)
参数:pattern:匹配的正则表达式,string:要匹配的字符串,flages:标志位,用于控制正则表达式的匹配方式
flags的值如下:
(常)re.I(忽略大小写)
re.L(做本地化识别)
(常)re.M(多行匹配,影响^和$)
(常)re.S(时.匹配包括换行符在内的所有字符)
re.U(根据Unicode字符集字符,影响\w,\W,\b,\B)
re.X(使我们以更灵活的格式理解正则表达式))
功能:尝试从字符串的起始位置匹配一个模式,如果不是起始位置(从字符串0索引开始)匹配成功的话,返回None
即:匹配的模式必须在字符串的开头
#www.baidu.com
#扫描整个字符串,返回从起始位置成功的匹配
print(re.match('www','www.baidu.com'))#能找到,返回一个对象,和www在的索引
print(re.match('www','ww.baidu.com'))#不能找到返回None
print(re.match('www','baidu.wwwcom'))#不能找到返回None
'''
'''
2:re.search函数
原型:search(pattern, string, flags=0)
参数:pattern:匹配的正则表达式,string:要匹配的字符串,flages:标志位,用于控制正则表达式的匹配方式
flags的值如下:
(常)re.I(忽略大小写)
re.L(做本地化识别)
(常)re.M(多行匹配,影响^和$)
(常)re.S(时.匹配包括换行符在内的所有字符)
re.U(根据Unicode字符集字符,影响\w,\W,\b,\B)
re.X(使我们以更灵活的格式理解正则表达式))
功能:扫描整个字符串,并返回第一个成功的匹配
print(re.search('www','baidu.wwwcom'))##能找到,返回一个对象,和www在的索引
'''
'''
re.findall函数
原型:findall(pattern, string, flags=0)
参数:pattern:匹配的正则表达式,string:要匹配的字符串,flages:标志位,用于控制正则表达式的匹配方式
flags的值如下:
(常)re.I(忽略大小写)
re.L(做本地化识别)
(常)re.M(多行匹配,影响^和$)
(常)re.S(时.匹配包括换行符在内的所有字符)
re.U(根据Unicode字符集字符,影响\w,\W,\b,\B)
re.X(使我们以更灵活的格式理解正则表达式))
功能:扫描整个字符串,并返回结果列表(可以匹配多个数据)
print(re.findall('www','www.baidu.www.com'))
'''
import re
re.subn
'''
'''
'''
1:字符串切割
str1='sunck is a good man'
print(str1.strip(' '))
print(re.split(r' +',str1))
2:字符串的替换和修改
re.sub()
re.sunb()
'''
'''
'''
'''
1:re.finditer函数
原型:finditer(pattern, string, flags=0)
参数:pattern:匹配的正则表达式,string:要匹配的字符串,flages:标志位,用于控制正则表达式的匹配方式
flags的值如下:
(常)re.I(忽略大小写)
re.L(做本地化识别)
(常)re.M(多行匹配,影响^和$)
(常)re.S(时.匹配包括换行符在内的所有字符)
re.U(根据Unicode字符集字符,影响\w,\W,\b,\B)
re.X(使我们以更灵活的格式理解正则表达式))
:
功能:于findall类似,扫描整个字符串,返回的是一个迭代器
2:re.sub函数和re.subn函数
原型:sub(pattern, repl, string, count=0, flags=0)
:subn(pattern, repl, string, count=0, flags=0)
参数:pattern:匹配的正则表达式,repl:指定的要替换的字符串,string:目标字符串,count:最大替换次数,flages:标志位,用于控制正则表达式的匹配方式
flags的值如下:
(常)re.I(忽略大小写)
re.L(做本地化识别)
(常)re.M(多行匹配,影响^和$)
(常)re.S(时.匹配包括换行符在内的所有字符)
re.U(根据Unicode字符集字符,影响\w,\W,\b,\B)
re.X(使我们以更灵活的格式理解正则表达式))
功能:在目标字符串中以正则表达式的规则匹配字符串,在把他们替换成指定字符串,可以指定替换次数,如果不指定,就会替换匹配到的所有的字符串
区别:sub返回一个被替换的字符串
subn返回一个元组,第一个元素是被替换的字符串,第二个元素表示被替换的次数
分组:
概念:除了简单的判断是否匹配之外
正则表达式还有提前子串的功能,用()表示的就是提取分组
str='010-53247654'
m=re.match(r'(?P
#使用序号获取对应组的信息,group(0)一直代表的原始字符串
#?P
print(m.group(0))
print(m.group(1))
print(m.group(2))
#查看匹配的各组情况
print(m.groups())
编译:
概念:当我们使用正则表达式时,re模块会干两件事
1:编译正则表达式,如果正则表达式本身不合法,会报错
2:用编译后的正则表达式去匹配对象
编译函数:
re.compile函数
原型:compile(pattern, flags=0)
参数:pattern:要编译的正则表达式
flages:标志位,用于控制正则表达式的匹配方式
flags的值如下:
(常)re.I(忽略大小写)
re.L(做本地化识别)
(常)re.M(多行匹配,影响^和$)
(常)re.S(时.匹配包括换行符在内的所有字符)
re.U(根据Unicode字符集字符,影响\w,\W,\b,\B)
re.X(使我们以更灵活的格式理解正则表达式))
功能:
#编译成正则对象,编译完后都可以通过编译对象(re对象)来调用match,search等re函数
pat=r'^1(([3578]\d)|(47)\d{8}$'
re_telephone=re.compile(pat)
#编译完后的运用,相当于调用re函数时少了正则表达式的输入
re_telephone.match(str)
'''
re.compile()