1.正则表达式是使用单个字符串来描述匹配一系列符合某个句法规则的字符串。比如查找以http开图以jpg结尾的字符串。
2.是对字符串操作的一种逻辑公式。
3.处理文本和数据.
4.正则表达式过程:依次拿出表达式和文本中的字符比较,如果每一个字符都能匹配,则匹配成功;否则匹配失败。
5.需要在开头引入 import re
6.正则表达式语法 -----使用正则表达式匹配单个字符。
7.使用正则表达式表示多个字符。
8.使用正则表达式进行边界匹配
9.使用正则表达式分组匹配。
代码部分
import re
strl ='iMooc python'
result1 = strl.find('11')#输出-1表示匹配失败4
result2 = strl.find('imooc')#输出0表示匹配成功
# print (result1)
# print (result2)
pa = re.compile(r'imooc',re.I)#前面加r的原因是代表原字符串,即不需要转义。如果后面有\n则表示是字符\和n,不是代表换行
#re.I表示忽略大小写,ignore,虽然上面的M大写也能识别出来。
ma = pa.match(strl)
print (ma.string)#匹配的字符串
print (ma.span())#匹配的位置是从0到5
#正则语法..两个点表示匹配两个任意字符(除了\n) 上面的ma是没有goup的
ma2 = re.match(r'..','01SADA12')
ma3 = re.match(r'[A-Z][a-z]*','Asdftgg')#大写字母开头,后面小写字母0个到无穷个。
ma4 = re.match(r'[_a-zA-Z]+[\W]*','asd$*&^$%')
ma5 = re.match(r'[1-9]?[0-9]','09*')#匹配0-99的数字,只会匹配0,后面就9不会匹配。
ma6 = re.match(r'[1-9]?[0-9]','56')#匹配0-99的数字
ma7 = re.match(r'[a-zA-Z0-9]{6,10}@163.com','abc123asdk@163.com')#只会匹配到abc123六到十位,如果多了一位,则第十一位不匹配,如果少了一位比如是abc12,那么则会没有group
ma8 = re.match(r'[0-9][a-z]*?','1bc')#非贪婪模式:尽可能的少匹配第一个数字之后的字母,所以后面的bc都不匹配了,只匹配了1. +* ?*同理
ma9 = re.match(r'^[\w]{6,10}@163.com$','abc123asdk@163.com')#必须以@163.com结尾,字母开头。
ma10 = re.match(r'[0-9]?\d$|100','99')#匹配0到100的数字。
ma11 = re.match(r'^[\w]{6,10}@(163|126).com$','abc123asdk@126.com')#163或者126邮箱结尾。
ma12 = re.match(r'<([\w]+>)([\w]+)python')
# ma12 = re.match(r'<[\w]+>[\w]+','python')
ma13 = re.match(r'<(?P[\w]+>)[\w]+python') #用名字去引用分组。
print ('ma2='+ma2.group())
print ('ma3='+ma3.group())
print ('ma4='+ma4.group())
print ('ma5='+ma5.group())
print ('ma6='+ma6.group())
print ('ma7='+ma7.group())
print ('ma8='+ma8.group())
print ('ma9='+ma9.group())
print ('ma10='+ma10.group())
print ('ma11='+ma11.group())
print ('ma12='+ma12.group())
print ('ma13='+ma13.group())