正则表达式

正则匹配:模糊匹配(不是精确匹配)

1.  []      # 代表原子表
            [abc]   # 匹配一个字母a、b、c
            [a-z]   # 匹配任意一位小写字母
            [a-zA-Z]    # 匹配任意一位字母
            [0-9]   # 匹配0-9

2.  ^       # 以什么开头,在院子表内写是以什么开头,在原子表以外写是取反,相当于\A
            [^a-z]  # 匹配以字母开头的字符串
            ^a[a-zA-Z]  # 匹配以字母a开头的两位字母
            ^[a-zA-Z]   # 匹配任意一位非字母

3.  $		# 以什么结尾,通常^和$结合使用,这样才能真正限制匹配的内容,相当于\Z
            ^1[3-8][0-9]{9}$   # 匹配手机号

4.  {m}     # 表示前面的数量 m 个,不能单独使用
            a{3}    # 匹配3个a
            [a-zA-Z]{3}     # 匹配任意3位字母
            [^a-zA-Z]{3}    # 匹配任意3位字母作为开头的串
            [^a-zA-Z]{3}[0-9]{8}$  # 匹配任意3位字母开头,后面8位数字,共11位字符的串

5.  {m, n}  # 表示前面的数量m - n 位
            [^1-9][0-9]{4, 10}$        # 匹配qq号

6.  {, m}   # 至少 m 个,不能单独使用

7.  ?       # 可有可无
            [1-9][0-9]?     # 匹配 1- 99
            [1-9][0-9]{0, 1}    # 匹配1 - 99
            -?[0-9]     #匹配一位整数(正负)

8.  .       # 匹配换行符以外的任意字符

9.  *       # 匹配前面一个字符任意次

10. .*      # 匹配换行符意外的任意长度字符(贪婪模式)

11. .*?     # 匹配换行符意外的任意长度字符(非贪婪模式)

12. +       # 表示匹配数量至少 1 次 {1, }

13. .+      # 换行符以外的字符至少 1 次(贪婪模式)

14. .+?     # 换行符以外的字符至少 1 次(非贪婪模式)

15. ()      # 代表一个单元,子存储(可以获取到括号里匹配的值)

16. |       # 或

二 不转成正则对象的修正符

  1. re.I # 忽略大小写
  2. re.M #多行模式,改变^和$的行为
  3. re.S # 改变点的行为,可以使 . 匹配换行符

三 正则的函数

使用正则,需要导入re模块

  1. re.match(正则, 字符串, 修正符)
    匹配成功:返回匹配的对象,用group获取
    匹配失败:返回None
    注意
    从第一位开始进行匹配
    只匹配一次
  2. re.search(正则,字符串,修正符)
    匹配成功:返回匹配的对象,用group获取
    匹配失败:返回None
    注意
    只要字符串包含就可以
    只匹配一次