Python学习第十三课——re(正则表达式)模块
.的用法
import re
s = 'fhsdjakaxdsancjh'
# .代表一个元素,完成模糊匹配
res = re.findall("a..x", s) # 找到s中以a开头x结尾中间有两个元素的结果
print(res) # ['akax']
res1 = re.findall("^f..d", s) # ^代表只能从字符串的开头进行匹配
print(res1) # ['fhsd']
res2 = re.findall("n..h$", s) # $代表必须以h结尾
print(res2) # ['ncjh']
重复匹配
# 重复匹配(*,+,?)
s1 = 'seyqindddddiznsk'
res = re.findall("ind*", s1) # *是匹配0到无穷次 (贪婪匹配)
print(res) # ['inddddd']
res1 = re.findall("ind+", s1) # +是匹配1到无穷次(贪婪匹配)
print(res1) # ['inddddd']
res2 = re.findall("ind?", s1) # +是匹配(0,1)
print(res2) # ['ind']
res3 = re.findall("ind{3}", s1) # {} 表示匹配的数量
print(res3) # ['inddd']
[]用法
# []作用
res1 = re.findall("x[yz]", "xyuuuxz") # x与yz组合匹配
print(res1) # ['xy', 'xz']
res2 = re.findall('x[y,z]p', 'xypisispux,pu')
print(res2) # ['xyp', 'x,p']
res3 = re.findall('q[a-z]', 'qjksmdqb') # [a-z]就是p于a到z里面任意一个都可以匹配
print(res3) # ['qj', 'qb']
res4 = re.findall('q[0-9]*', 'q988jsjjsjksjkd9')
print(res4) # ['q988']
# [^] 非
res1 = re.findall('q[^a-z]*', 'q213') # ^在[]中就是“非”的意思
print(res1) # ['q213']
res2 = re.findall('q[^a-z]*', 'qabc') # ^在[]中就是“非”的意思
print(res2) # ['q'] 没有匹配到
\用法
# \(反斜杠):让有意义的变为无意义,让无意义变为有意义
'''
\d 匹配任何十进制数;它相当于[0-9]
\D 匹配任何非数字字符;它相当于[^0-9]
\s 匹配任何空白字符;它相当于[\t\n\f\v]
\S 匹配任何非空白字符;它相当于[^\t\n\f\v]
\w 匹配任何字母数字字符;它相当于[a-zA-Z0-9]
\W 匹配任何非字母数字字符;它相当于[0-9]
\b 匹配一个特殊字符边界,比如空格,&,#等
'''
res1 = re.findall('\d+', "sada55578dsdsa")
print(res1) # ['55578']
res2 = re.findall('\D+', "sada55578dsdsa")
print(res2) # ['sada', 'dsdsa']
res3 = re.findall('\s+', "hellow world")
print(res3) # [' ']
res4 = re.findall('\S+', "hellow world")
print(res4) # ['hellow', 'world']
res5 = re.findall('\w+', "dasd-sh11+")
print(res5) # ['dasd', 'sh11']
res6 = re.findall('\W+', "dasd-sh11+")
print(res6) # ['-', '+']
# 让元字符变得无意义例子
res7 = re.findall('www\*baidu', 'www*baidu')
print(res7) # ['www*baidu']
# res8 = re.findall('(84', '(84') # 报错
# print(res8)
res8 = re.findall('\(84', '(84')
print(res8) # ['(84']