import re test = r'^\d{3}\-\d{3,8}$' num = '010-12345' print(re.match(test,num))#<re.Match object; span=(0, 9), match='010-12345'> match()方法判断是否匹配,若是匹配成功,返回一个Match对象,不然返回None str1 = 'a b c' print(re.split('\s+',str1))#['a', 'b', 'c'] 正则表达式切分字符串 test1 = r'^(\d{3})-(\d{3,8})$'#用()表示的就是要提取的分组(Group),^(\d{3})-(\d{3,8})$分别定义了两个组 str2 = re.match(test1,num) print(str2.groups())#('010', '12345') print(str2.group(0))#010-12345 group(0)永远是原始字符串,group(1)、group(2)……表示第一、二、……个子串 print(str2.group(1))#010 print(str2.group(2))#12345 print(re.match(r'^(\d+)(0*)$', '102300').groups())#('102300', '') 因为\d+采用贪婪匹配,直接把后面的0所有匹配了,结果0*只能匹配空字符串了 print(re.match(r'^(\d+?)(0*)$', '102300').groups())#('1023', '00') 必须让\d+采用非贪婪匹配(也就是尽量少匹配),才能把后面的0匹配出来,加个?就能够让\d+采用非贪婪匹配 #若是一个正则表达式要重复使用几千次,出于效率的考虑,咱们能够预编译该正则表达式,接下来重复使用时就不须要编译这个步骤了,直接匹配 re_telephone = re.compile(r'^(\d{3})-(\d{3,8})$') print(re_telephone.match('010-12345').groups())#('010', '12345') 编译后生成Regular Expression对象,因为该对象本身包含了正则表达式,因此调用对应的方法时不用给出正则字符串