re.match方法:尝试从字符串的起始位置匹配一个规则,匹配成功就返回match对象,否则返回None。可以使用group()获取匹配成功的字符串
    语法:re.match(pattern,string,flags=0)

    pattern:匹配的正则表达式
    string:要匹配的字符串
    flags:标志位,用于控制正则表达式的匹配方式 re.I 匹配对大小写不敏感 re.M 多行匹配 re.S 使.匹配包括换行在内所有字符
    group(num)可以获取匹配的数据 如果有多个匹配结果的话,则会以元组的形式存放到group对象中,此时我们可以通过下标去获取

    常用的匹配规则-匹配字符
    符号 匹配规则
    .(点) 匹配任意1个字符除了换行符\n
    [abc] 匹配abc中的任意一个字符 可以使用范围如[a-z] [^0-9] ^取反
    \d 匹配一个数字,即0-9
    \D 匹配非数字
    \s 匹配空白,即空格,tab键
    \S 匹配非空白,除空格,tab键之类的
    \w 匹配单词字符,即a-z,A-Z,0-9,…
    \W 匹配非单词字符

    常用的匹配规则-匹配字符数量
    符号 匹配规则
    * 匹配前一个字符出现0次或者无限次,即可有可无
    + 匹配前一个字符出现1次或者无限次,即至少有一次
    \? 匹配前一个字符出现1次或者0次,即要么有1次,要么没有
    {m} 匹配前一个字符出现m次
    {m,} 匹配前一个字符至少出现m次
    {n,m} 匹配前一个字符出现n到m次 {min,max}前导字符min次到max次

    常用的匹配规则-原生字符串:在正则前面加r 表示原生的字符串,python字符串就不再转义
    python字符串中\作为转义字符开头,比如\n表示换行,\t表示tab键
    而为了表示\本身,再加一个\,形成\形式

    常用的匹配规则-匹配开头结尾
    符号 匹配规则
    ^ 匹配字符串开头 其中^有两种含义:1.以x开头 2.否定 取反
    $ 匹配字符串结尾

    常用的匹配规则-分组匹配
    符号 匹配规则
    | 匹配左右任意一个表达式
    (ab) 将括号中字符作为一个分组 可用res.group(num)调用指定分组
    \num 引用分组num匹配到的字符串
    (?p) 分组起别名 (?p<名字>)
    (?p=name) 引用别名为name分组匹配到的字符串

    re.compile方法
    compile将正则表达式模式编译成一个正则表达式对象
    reg=re.compile(pattern),
    result=reg.match(string) 其中match可换为search,findall等其它函数
    等效于result=re.match(pattern,string)
    使用re.compile()和保存所产生的正则表达式对象重用效率更高

    re.search方法
    search在全文中匹配一次,匹配到就返回
    语法:re.search(pattern,string,flags=0)
    pattern:匹配的正则表达式
    string:要匹配的字符串
    flags:标志位

    re.findall方法
    findall匹配所有返回一个列表,这个方法使用频率较高
    语法:findall(string[ ,pos[ ,endpos]])
    string:待匹配的字符串
    pos:可选参数,指定字符串的起始位置,默认为0
    endpos:可选参数,指定字符串的结束位置,默认为字符串的长度

    re.sub方法
    sub将匹配到的数据进行替换
    语法:sub(pattern,repl,string,count=0,flags=0)
    pattern:正则中的模式字符串
    repl:替换的字符串,也可为一个函数
    string:要被查找替换的原始字符串
    count:模式匹配后替换的最大次数,默认0表示替换所有的匹配
    flags:标志位

    re.subn方法:同时返回替换次数

    文件目录操作命令
    re.split方法
    split根据匹配进行切割字符串,并返回一个列表
    语法:split(pattern,string,maxsplit=0,flags=0)
    pattern:匹配的正则表达式
    string:要匹配的字符串
    maxsplit:分割次数,默认为0,不限制次数
    flags:标志位

    贪婪模式与非贪婪模式
    python里数量词默认是贪婪的,总是尝试匹配尽可能多的字符,非贪婪则相反,总是尝试匹配尽可能少的字符
    在* ? + {m,n} 后面加上? 使贪婪变成非贪婪