–
正则表达式 \d 可以匹配一个数字 \w 可以匹配一个数字或者字母 . 可以匹配一个任意字符 \s 可以匹配到一个空格 \s+至少一个空格 * 表示任意长度的字符(包括0个) + 表示任意长度的字符,至少一个 ? 表示0个或者1个 {n} 表示n个字符 {n-m} 表示n到m个字符 \d{3}\s+\d{3,8} 表示3个数字,至少一个空格,后面3-8个数字 我们强烈建议使用Python的r前缀,就不用考虑转义的问题了 import re a = re.match(r'^\d{3}\-\d{3,8}$','010-12345') print (a) #可以匹配到 b = re.match(r'^\d{3}\-\d{3,8}$', '010 12345') print (b) #匹配不到 Python split()通过指定分隔符对字符串进行切片,如果参数num 有指定值,则仅分隔 num 个子字符串 将字符串按照正则表达式的内容为分隔符,分割成列表形式 a = 'a b e' b = re.split(r'\s+', a) print (b) ['a', 'b', 'e'] c = re.split(r'[\s\,\;]+', 'a,b;; c d') print (c) ['a', 'b', 'c', 'd'] 除了简单地判断是否匹配之外,正则表达式还有提取子串的强大功能。用()表示的就是要提取的分组(Group) group(0)永远是原始字符串,group(1)、group(2)……表示第1、2、……个子串 正则匹配默认是贪婪匹配,也就是匹配尽可能多的字符 a = re.match(r'^(\d+)(0*)$', '1023000').groups() print (a) ('1023000', '') 必须让\d+采用非贪婪匹配(也就是尽可能少匹配),才能把后面的0匹配出来,加个?就可以让\d+采用非贪婪匹配 a = re.match(r'^(\d+?)(0*)$', '1023000').groups() print (a) ('1023', '000') 如果一个正则表达式要重复使用几千次,出于效率的考虑,我们可以预编译该正则表达式,接下来重复使用时就不需要编译这个步骤了,直接匹配 re_telephone = re.compile(r'^(\d{3})-(\d{3,8})$') re_telephone.match('010-12345').groups() ('010', '12345') re_telephone.match('010-8086').groups() ('010', '8086')
–
评论前必须登录!
注册