python学习day18 re模块
# 递归 # 超过最大递归深度 # 要写递归函数,必须有结束条件 # 返回值 # 不要看到return就以为返回了,要看返回的操作到第几层是发生,并返回给了谁。 # 如果不是返回给最外层函数,调用者就接收不到 # 需要再分析,看如何把结果返回 # 作业 # 斐波那契数列 # 1,1,2,3,5,8 # def fib(n): # if n ==1 or n == 2: # return 1 # return fib(n-1) + fib(n-2) # print(fib(50)) # fib(6)=fib(5)+fib(4) # fib(5)=fib(4)+fib(3) # fib(4)=fib(3)+fib(2) # fib(2)=1 # fib(1)=1 # 斐波那契数列优化 # def fib(n,a=1,b=1): # if n == 1: # return a # return fib(n-1,b,a+b) # print(fib(6)) # 阶乘 # def fac(n): # if n == 1: # return 1 # return n * fac(n - 1) # print(fac(100)) # re正则模块 import re # while True: # phone_number = input('please input your phone number : ') # if len(phone_number) == 11 and phone_number.isdigit() and (phone_number.startswith('13') or phone_number.startswith('14') # or phone_number.startswith('15') # or phone_number.startswith('18')): # print('是合法的手机号码') # else: # print('不是合法的手机号码') #正则写法 # import re # phone_number = input('please input your phone number : ') # if re.match('^(13|14|15|18)[0-9]{9}$',phone_number): # print('是合法的手机号码') # else: # print('不是合法的手机号码') # ret = re.findall('[a-z]+','eva egon yuan') # #满足匹配条件的结果放在列表里 # print(ret) # ret = re.search('a','eva egon yuan')#搜索 # if ret: # print(ret.group()) #从前往后,找到一个就返回一个对象,需要调用group()方法才能拿到结果。 #如果没有找到就会返回None,调用group会报错 # ret = re.match('[a-z]+','eva egon yuan') # if ret: # print(ret.group()) #match是从头开始匹配,返回一个对象,需要调用group()方法才能拿到结果 #如果没有找到就会返回None,调用group会报错 # ret = re.split('[ab]','abcd') # print(ret) #先按‘a’分割得到‘’和‘bcd’ #再按‘b'分割,得到'','','cd' # ret = re.sub('\d','H','sadf554',1) # print(ret) #将数字替换成指定的字符,并可指定替换次数 # ret = re.subn('\d','H','sadf554',1) # print(ret) #将数字替换成指定的字符,并可指定替换次数 #返回元组包含替换结果和替换次数 # obj = re.compile('\d{3}') #将正则表达式编译成一个对象 # ret = obj.search('abc123eee')#对象调用search,参数为待匹配字符串 # print(ret.group()) # ret = obj.search('aaghuhdsijlgnasliugh;s1532bc123eee') # print(ret.group()) # ret = re.finditer('\d','asfasf41fasf5asf5')#返回一个迭代器 # print(ret) # print(next(ret).group())#调用结果 # print(next(ret).group())#调用结果 # print(next(ret).group())#调用结果 # print(next(ret).group())#调用结果 # ret = re.findall("www.(baidu|oldboy).com",'www.oldboy.com') # print(ret)#['oldboy'] #findall会优先返回匹配结果组里的内容返回,可取消权限 # ret = re.findall("www.(?:baidu|oldboy).com",'www.oldboy.com') # print(ret)#['www.oldboy.com'] #取消权限 # ret = re.split('\d+','fweff75wef4wef4we2fwefew') # print(ret)#['fweff', '', 'wef', 'wef', 'we', 'fwefew'] # ret = re.split('(\d+)','fweff75wef4wef4we2fwefew') # print(ret)#['fweff', '75', 'wef', '4', 'wef', '4', 'we', '2', 'fwefew'] #安组分,分割元素还在