#正则表达式简介
#就是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符以及这些特定字符的组合组成一个有规则的
#字符串 这个字符串用来表达对字符串一种过滤的逻辑
#python对正则表达式的支持
import re
pattern ='python'
stra ='pythonandjava'
#有三个参数第一个参数就是pattern 第二个参数是stra表示要匹配的字符串 第三个参数标志位匹配方式
res = re.match(pattern,stra)
if res:
print(res.group())#内容
print(res.start())#开始位置
print(res.end())#结束位置
print(res.span())#从几到几
print(res.string)#字符串
else:
print('没有')
from matplotlibimport pyplotas plt
import re
#匹配单个字符
# .是匹配任意除了换行的1个字符
#[]匹配[]中列举的字符
#\d匹配数字零到九
#\D匹配非数字
#\s匹配空白 tab
#\S匹配非空白
#\w匹配单词字符 a-z A-Z 0-9 _
#\W匹配非单词字符
# def fn(x,y):
# for i in y:
# res = re.match(x,i)
# if res:
# print(res.group(),'匹配成功')
# else:
# print('匹配失败')
# # x ='ab.'
# # y = ['ab','abc','abe']
# # fn(x,y)
# # x = 'm[abcd]n'
# # y = ['mon','mdn','mmm','www','man']
# # x = 'm[\d]n'
# # y =['m1n','m9n','mmm','m_n']
# # x = 'm[\D]n'
# # y =['m1n','m9n','mmm','m_n']
# # x = 'm[\s]n'
# # y =['m1n','m9n','mmm','m_n','m n','m\tn']
# # x = 'm[\S]n'
# # y =['m1n','m9n','mmm','m_n','m n','m\tn']
# # x = 'm[\w]n'
# # y =['m1n','m9n','mmm','m_n','m n','m\tn']
# x = 'm[\D]n'
# y = ['m@n']
# fn(x,y)
#匹配多个字符
#*匹配前一个字符出现零次或者无限次 可有可无
#+匹配前一个字符出现一次或者无限次 至少得有一次
#?匹配前一个字符出现零次或者一次 要么有要么没有
#{m}匹配前一个字符出现m次
#{m,n}匹配前一个字符出现从m到n次
#{m,}加上逗号前一个字符出现m到无限次
# def fn(x,y):
# for i in y:
# res = re.match(x,i)
# if res:
# print(res.group(),'匹配成功')
# else:
# print('匹配失败')
# y = ['hello','abc','xxx','h']
# x = 'h[a-z]*'
# fn(x,y)
# print('-'*50)
# y = ['hello','abc','xxx','h']
# x = 'h[a-z]+'
# fn(x,y)
# print('-'*50)
# y = ['hello','abc','xxx','h']
# x = 'h[a-z]?'
# fn(x,y)
# print('-'*50)
# y = ['hello','abc','xxx','h','python','123456']
# x ='[\w]{6}'
# fn(x,y)
# print('-'*50)
# y = ['hello','abc','xxx','h','python','123456','12345678']
# x ='[\w]{3,7}'
# fn(x,y)
# print('-'*50)
# y = ['hello','abc','xxx','h','python','123456','12345678']
# x ='[\w]{3,}'
# fn(x,y)
# print('-'*50)
#
# def fn(x,y):
# for i in y:
# res = re.match(x,i)
# if res:
# print(res.group(),'匹配成功')
# #print(res.group(1),res.group(2))
# else:
# print('匹配失败')
# #匹配数字或者字母开头的邮箱
# x = '[\w]+@qq.com$'#$表示到这里结束
# y =['123@qq.com','abc@yy.com','bcde@qq.com.cn']
# fn(x,y)
#匹配数组
#|表示左右俩边任意一个表达式 相当于or
#(ab)将括号里的字符作为一个分组
#\num 引用分组num匹配到的字符串
# x= 'hello|hc'#匹配hello或者hc
# y= ['hello','hc','helloworld','ok']
#
# # #检查一个以134或者135开头的手机号
# # y = ['13423456534','13413413413','13600987432']
# # # x = '(134|135)[0-9]{8}'
# # # fn(x,y)
# # x ='([^-]*)-(\d+)'
# # y = ['010-12345678']
# y = ['hellp','ddd','python']
# x = r'<([a-zA-Z]{1,12})>\w*'
# # fn(x,y)
# #贪婪匹配和非贪婪匹配
# s = r'
# d = r'
# r = re.match(d,s)
# print(r.group())
#
#
#
#
#