前几天写的没有保存草稿,电脑关机就没有了。很是心痛

接下来复习一下正则表达式的操作

  • \d匹配一个数字

 

  • \w匹配一个数字或字母
  • .可以匹配任意字符
  • *可以匹配任意多个字符
  • +可以匹配至少一个字符
  • ?可以匹配0个或一个字符
  • {n}表示n个字符
  • {n,m}表示n~m个字符

例子:\d{3}\s+\d{3,8}

  1. \d{3}表示匹配3个数字,例如'010'
  2. \s可以匹配一个空格(也包括Tab等空白符),所以\s+表示至少有一个空格,例如匹配' '' '等;
  3. \d{3,8}表示3-8个数字,例如'1234567'

综合起来,上面的正则表达式可以匹配以任意个空格隔开的带区号的电话号码。如果要匹配'010-12345'这样的号码呢?由于'-'是特殊字符,在正则表达式中,要用'\'转义,所以,上面的正则是\d{3}\-\d{3,8}

  •  下面是更精确的匹配格式
  • [0-9a-zA-Z\_]表示可以匹配一个数字、字母或下划线
  • [0-9a-zA-Z\_]*表示可以匹配一个由数字、字母、下划线组成的字符串
  • [0-9a-zA-Z\_][0-9a-zA-Z\_]{0,19}表示可以匹配一个前面一个字符+后面最多19个字符的字符串
  • A|b可以匹配A或b,比如(P|p)ython可以匹配Python或python
  • ^表示行的开头,^\d表示行只能以数字开头
  • $表示行的结尾,\d$表示行只能以数字结尾

正则表达式的匹配

正则表达式使用re模块里的match()方法匹配

具体格式:其中r前缀表示不考虑正则表达式的转义字符,单独使用match时,若匹配成功,则返回一个match对象,若匹配不成功,则返回none

test='用户输入的字符串'

if re.match(r'正则表达式',test):

  print'OK'else:print'faild'

 

正则表达式的split可以将不规则的输入转化为规范的输入
>>> re.split(r'[\s\,]+', 'a,b,    ,,c ,, d')
['a', 'b', 'c', 'd']

 正则表达式的分组匹配,这是一个分组匹配时间的问题

>>> t = '19:05:30'
>>> m = re.match(r'^(0[0-9]|1[0-9]|2[0-3]|[0-9])\:(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|[0-9])\:(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|[0-9])$', t)
>>> m.groups()
('19', '05', '30')

 

下面是一个例子

'''正则表达式匹配邮箱'''
import re
n=re.match(r'^(\w*)(\@)(\w*)\.(\w*)$','soneone@gmail.com')
print(n.groups())
posted on 2017-07-28 14:57  大瑞清创世录  阅读(111)  评论(0)    收藏  举报