Python3-re模块-正则表达式

Python3中的re模块提供与Perl中类似的正则表达式匹配操作

  ^

    匹配字符串的开头

  $

    匹配字符串的结尾

  .

    匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符

  [...]

    用来表示一组字符,例如[amk]匹配 a 或 m 或 k

  [^...]

    匹配不在[]中的字符,例如[^abc]匹配除了a,b和c之外的字符

  re*

    匹配0次或多次前面的表达式

  re+

    匹配1次或多次前面的表达式

  re?

    匹配0次或1次前面的表达式

  re{n}

    n为数字,匹配n次前面的表达式

  re{n, m}

    n,m为数字,匹配n到m次前面的表达式,最少n次,最多m次

  re_a|re_b

    匹配表达式re_a或表达式re_b

  (re)

    全匹配括号内的表达式,也表示一个组

  \w

    匹配字母数字及下划线,相当于[A-Za-z0-9]

  \W

    匹配非字母数字及下划线,相当于[^A-Za-z0-9]

  \d

    匹配一个数字字符,相当于[0-9]

  \D  

    匹配一个非数字字符,相当于[^0-9]

  \s

    匹配任何空白字符,相当于[ \f\n\r\t\v],注意\f的前面有个空格

  \S

    匹配非任何空白字符,相当于[^ \f\n\r\t\v],注意\f的前面有个空格

re模块常用的方法

  re.match(pattern, string, flags=0)

    如果在字符串的开头的零个或更多字符匹配正则表达式模式,将返回相应的MatchObject实例,返回None则与模式不匹配

  re.search(pattern, string, flags=0)

    扫描字符串,寻找的第一个由该正则表达式模式产生匹配的位置,并返回相应的MatchObject实例,返回None则与模式不匹配

  re.sub(pattern, repl, string, count=0)

    匹配正则表达式成功后将其替换成指定字符串

    pattern为匹配的正则表达式,repl为要替换的字符,string为扫描的字符串,count为替换次数

  re.fullmatch(pattern, string, flags=0)

    参考re.match(),只不过它是全匹配整个字符串,re.match()只匹配开头

  re.split(pattern, string, maxsplit=0, flags=0)

    利用正则表达式进行字符串分割

  re.purge()

    清除正则表达式缓存

  注:

    flags参数是匹配模式,比如可以忽略大小写进行匹配,很少用,具体参考:

    re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None

    re.search匹配整个字符串,直到找到一个匹配

    pattern既可以是一个正则表达式字符串,也可以是通过re.compile()方法编译过的正则对象,有需要可以深入了解

import re

phone_number_regex = r"^1[34578]\d{9}$"                      # 中国大陆手机号简单正则表达式
phone_number = "1234567"
match_object = re.match(phone_number_regex, phone_number)     
if match_object:
    print("这是一个手机号!")
else:
    print("这是一个非法手机号!")
1.正则表达式验证手机号
import re

# 用户名要求由字母、数字和下划线组成,且不能以数字和下划线开头,最低6位,最高不能超过16位
user_name_regex = r"^[a-zA-Z]\w{5,15}$"
user_name = "q12@3_4_5"
match_object = re.match(user_name_regex, user_name)
if match_object:
    print("这是一个合法用户名!")
else:
    print("这是一个非法用户名!")
2.正则表达式验证用户名

 

  

 

posted on 2017-03-22 09:08  AustralGeek  阅读(156)  评论(0编辑  收藏  举报

导航