Python之正则表达式笔记

概述

      概念

             Regular Expression

             一种文本模式,描述在搜索文本时要匹配的一个或多个字符串

      典型场景

             数据验证、文本扫描、文本提取、文本替换、文本分割

     语法

            字面值

                    普通字符

                   需转义:\  ^  $  .  |  ?  *  +  ()  []  {}

            元字符

     匹配

           单字,预定义元字符

                     . 除\n外的所有字符   \d 数字,等同于[0-9]   \D非数字,等同于[^0-9]

                     \s 空白字符 \t\n\r\f\v     \S 非空白字符[^\t\n\r\f\v]

                     \w 字母数字字符[a-zA-Z0-9_]     \W 非字线数字[^a-zA-Z0-9_]

           批量备选     |  yes|no

          量词(字符、元字符,字符集如何重复)

                   ? 0或1次   * 0或多次   + 1或多次    

                    特定: {n,m}范围次数 {n}n次  {n,}至少n次   {,m}最多m次

          贪婪与非贪婪

                   贪婪(默认):尽量匹配最大范围结果

                  非贪婪

                          尽量匹配最小的范围结果

                          方法:量词后追加? 例:??   *?   +?

           边界匹配

                    ^ 行首   $ 行尾   \b 单词边界   \B 非单词边界    \A 输入开头    \Z 输入结尾

                      注:或因上下文差异有不同表

Python 正则

      模块     import re

      RegexObject 正则对象

              模式对象,表现编译后的正则表达式(编译为字节码并缓存)

              编译     re.compile('模式')

             .findall()  1查找所有非重叠匹配项  2返回list

             .match(string[,pos[,endpos]])  1匹配,仅从开始位置  2返回MatchObject

             .search(string[,[pos[,endpos]])  1任意位置搜索  2返回MatchObject

             .finditer()  1查找所有匹配项   2返回包括MatchObject元素的迭代器

      MatchObject 匹配对象

              表现被匹配的模式

             .group() 1参数为0或空返回整个匹配 2有参时返回特定分组匹配细节 3参数也可以是分组名称

             .groups()   返回包含所有子分组的元组

             .start() 返回特定分组的起始索引

             .end() 返回特定分组的终止索引

             .groupdict() 以字典表形式返回分组名及结果

      

    Group 编组

             场景   1从匹配模式中提取信息 2创建子正则以应用量词  3限制备选项范围

                       4重用正则模式中提取的内容

             声明   1(模式) 2(?P<name>模式)

             引用   1匹配对象内 m.group('name')  2模式内 (?P=name)  3表现内 \g<name>

     应用

           字符串操作  1 .split(string, maxsplit=0)   分割字符串

                               2 .sub(repl, string, count=0)   替换字符串

                              3 .subn(repl, string, count=0)   替换并返回替换数量

           编译标记  1 改变正则的默认行为  2 re.I  忽略大小写  3 re.M  匹配多行

                          4 re.S  指定"."匹配所有字符,包括\n   …

           模块级别操作  1 re.purge()  清理正则缓存   2 re.escape()  逃逸字符

posted @ 2019-08-12 21:45  yg_staring  阅读(165)  评论(0编辑  收藏  举报