正则表达式
1,正则表达式:是用来干嘛的?
匹配字符串的
正则表达式是一种小型的,高度专业化的编程语言,(在python中)它内嵌在python中,并通过re模块实现,被
编译成一系列的字节码,然后由c编写的匹配函数。
2, 元字符 11个
2.1 点 '.' 通配 符, 一个点只能匹配(代指任意)一位.
2.2 '^' 从开始匹配'
2.3 '$ ' 从结尾匹配'
2.4 '*' '重复匹配[0,oo]零到无穷
print("----'*'重复匹配[0,oo]零到无穷------")
ret = re.findall('ba*','urastafadfabaaaaaa')
print(ret)
2.5 print("----'+'重复匹配[1,oo]零到无穷------")
ret = re.findall('ab+','kjldfha') #没有b则不能匹配,因为没有b
print(ret)
ret = re.findall('ab+','kjldfhab') #有b则能匹配,
print(ret)
ret = re.findall('a+b','aaaabhqhabfb') #有ab则能匹配,
print(ret)
结论: * 等于{0,正无穷}
+ 等于{1,+oo}
? 等于{0,1}
print("----'[]'字符集[]内的匹配范围------")
ret = re.findall('[a-z]','adx')
print(ret)
#[]字符集: 取消元字符的特殊功能,但(\,^,-另外)
print("----'[]'字符集[]内的匹配范围------")
ret = re.findall('[w,*,.]','ad.x*')
print(ret)
ret = re.findall('[1-9,a-z,A-Z]','adfdsfds5sd9x*')
print(ret)
#^放在[]中是取反
ret = re.findall('[^t]','atdfdsfds5sd9x*') #取反,除了t外全部匹配
print(ret)
ret = re.findall('[^4,5]','at4dfds5fd6s,5sd9x*') #取反,除了4,5外全部匹配
print(ret)
#\ 后面跟元字符去除特殊功能,如\. 是去除 .的功能
# 后面跟普通字符实现特殊功能
# \d 匹配任何十进制,相当与【0-9】
# \D 匹配任何非数字字符,相当与【^0-9】
#\s 匹配任何空白字符,相当与[\t\n\r\f\v]
#\D 匹配任何非空白字符,相当与[^\t\n\r\f\v]
#\w 匹配任何字母数字字符,相当与[a-zA-Z0-9_]
#\W 匹配任何非字母数字字符,相当与[^a-zA-Z0-9_]
#\b: 匹配一个单词边界(或特殊字符),也就是指单词和空间的位置
print("----'\'匹配范围------")
ret = re.findall('\d{11}','ffad454354354354354dsfa32131255433252fdsfa')
print(ret)
ret = re.findall(r'I\b','hello ,I am a LI$T') #单词边界I,(或特殊字符$)
print(ret)
#正则表达式的方法
1,findall() :所有结果都返回一个列表里
2,search(): 返回一个对象(object),对象可以调用group()返回结果
3,match(): 只在字符串开始匹配匹配,对象可以调用group()返回结果
ret = re.match('asd', 'asdfhdaasd')
print(ret) #<_sre.SRE_Match object; span=(0, 3), match='asd'>
4,split()