2.3 - 正则练习题
1.验证手机号是否合法
import re '''验证手机号是否合法''' ''' * 手机号码 * 移动:134,135,136,137,138,139,150,151,157,158,159,182,187,188 * 联通:130,131,132,152,155,156,185,186 * 电信:133,134,153,180,189 147... 176... ''' # phone_num = '13789481229' phone_num = input('phone>>>:') # pattern = re.compile('^0\d{2,3}\d{7,8}$|^1[358]\d{9}$|^147\d{8}') pattern = re.compile('^1[34578]\d{9}') phone_match = pattern.fullmatch(phone_num) if phone_match: print(phone_match.group()) else: print('\033[1;31mphone is error\033[0m')
2.验证邮箱是否合法
import re # email = 'alice@163.com' email = input('email>>>:') # pattern = re.compile('\w+@\w+\.(com|cn)') pattern = re.compile('[-_\w]+@[-_\w]+\.(com|cn|edu)') email_match = pattern.fullmatch(email) if email_match: print(email_match.group()) else: print('\033[1;31memail is error\033[0m') #re.match("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$", email)
3.开发一个简单的python计算器,实现加减乘除及拓号优先级解析
用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )等类似公式后,必须自己解析里面的(),+,-,*,/符号和公式(不能调用eval等类似功能偷懒实现),运算后得出结果,结果必须与真实的计算器所得出的结果一致
re.search(r'\([^()]+\)',s).group()#可拿到最里层的括号中的值
'(-40/5)'
1 #匹配整数或小数的乘除法,包括了开头存在减号的情况 2 mul_div=re.compile("(-?\d+)(\.\d+)?(\*|/)(-?\d+)(\.\d+)?") 3 #匹配整数或小数的加减法,包括了开头存在减号的情况 4 plus_minus = re.compile("(-?\d+)(\.\d+)?(-|\+)(-?\d+)(\.\d+)?") 5 #匹配括号 6 bracket=re.compile("\([^()]*\)") 7 #匹配乘法的时候出现乘以负数的情况,包括了开头存在减号的情况 8 mul_minus_minus = re.compile("(-?\d+)(\.\d+)?(\*-)(\d+)(\.\d+)?") 9 #匹配除法的时候出现乘以负数的情况,包括了开头存在减号的情况 10 div_minus_minus = re.compile("(-?\d+)(\.\d+)?(/-)(\d+)(\.\d+)?")
参考:http://www.bubuko.com/infodetail-1729967.html