Python 正则

Match 对象的属性
    .string     待匹配的文本
    .re         匹配是使用的pattern对象(正则表达式)
    .pos        正则表达式搜索文本的开始位置
    .endpos     正则表达式搜索文本的结束位置
    
Match 对象的方法
    .group()    获得匹配后的字符串    
    .start()    匹配字符中的原始字符串的开始位置
    .end()      匹配字符串的原始字符串的结束位置
    .span()     返回(.start(),.end())
    
Re库主要功能函数
    re.search(pattern,string,flags=0)
        在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象
            pattern:正则表达式的字符串或者原生字符串表示
            string:待匹配字符串
            flags:正则表达式使用时的控制标记
                re.I    re.IGNORECASE   忽略正则表达式的大小写,[A-Z]能够匹配小写字符
                re.M    re.MULTILINE    正则表达式中的 ^ 操作符能够将给定字符串的每行当作匹配开始
                re.S    re.DOTALL   正则表达式中的 . 操作符能够匹配所以字符,默认匹配除换行外的所有字符
    
    re.match(pattern,string,flags=0)
        从一个字符串的开始位置起匹配正则表达式,返回match对象
    
    re.findall(pattern,string,flags=0)
        搜索字符串,以列表类型返回全部能匹配的子串
    
    re.split(pattern,string,maxsplit=0,flags=0)
        将一个字符串按照正则表达式匹配结果进行分割,返回列表类型
            maxsplit:最大分割数,剩余部分作为最后一个元素输出
                maxsplit=0
                    匹配 一个,后面不匹配了
        匹配的部分去掉,不匹配的输出
    
    re.finditer(pattern,string,flags=0)
        搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象
   
    re.sub(pattern,repl,string,count=0,flags=0)
        在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串
            repl:替换匹配字符串的字符串
            count:匹配的最大替换次数
            使用repl替换string中每一个匹配的子串后返回替换后的字符串。
            当repl是一个字符串时,可以使用\id或\g、\g引用分组,但不能使用编号0。
            当repl是一个方法时,这个方法应当只接受一个参数(Match对象),并返回一个字符串用于替换(返回的字符串中不能再引用分组)。
            count用于指定最多替换次数,不指定时全部替换。

    re.subn(pattern, repl, string[, count])
        返回 (sub(repl, string[, count]), 替换次数)。

    regex = re.compile(pattern,flags=0)
        将正则表达式的字符串形式编译正正则表达式对象
        
        
最小匹配操作符
    *?      前一个字符2次或无限次扩展
    +?      前一个字符1次或无限次扩展
    ??      前一个字符2次或1次扩展
    {m,n}?      扩展钱一个字符m至n次(含n)
    
正则表达式的常用操作符
    .       表示任何单个字符    
    []      字符集,对单个字符给出去值范围         [abc]表示a,b,c;[a-z]表示a到z单个字符
    [^]     非字符集,对单个字符给出排除范围            [^abc]表示非a或b或c的单个字符
    *       前一个字符0次或无限次扩展           abc^表示ab,abc,abcc,abccc等
    +       前一个字符1次或无限次扩展           abc+表示abc,abcc,abccc等
    ?       前一个字符0次或1次扩展            abc?表示ab,abc
    |       左右表达式人一个            abc|def表示abc,def
    {m}     扩展前一个字符m次           ab{2}c表示abbc
    {m,n}   扩展前一个字符m至n次(含n)         ab{1,2}c表示abc,abbc
         匹配字符串开头         ^abc表示abc且在一个字符串的开头
    $       匹配字符串结尾         abc$表示abc且在一个字符串的结尾
    ()      分组标记,内部只能使用 | 操作符           (abc)表示abc,(abc|def)表示abc,def
    \d      数字,等价于[0-9]     
    \D      非数字,等价于[^0-9]    
    \w      单词字符,等价于[A-Za-z0-9]
    \W      非单词字符,等价于[^A-Za-z0-9]
    \s      匹配任意的空白符(空格,换行,回车,换页,制表),效果[ \f\n\r\t]
    \S     ......
    
    x?        匹配0个或1个x (非贪婪匹配)
    x*        匹配0个或任意多个x(.* 表示匹配0个或任意多个字符(换行符除外)贪婪匹配)
    x+        匹配至少一个x(贪婪匹配)



posted @ 2018-12-16 17:19  SilentKiller  阅读(229)  评论(0编辑  收藏  举报