zoukankan      html  css  js  c++  java
  • 正则表达式整理

    元字符:
         .            除换行符的任意字符
                     转义字符
         [...]        字符集合
         d           数字:[0-9]
         D           非数字[0-9]
         s            空白字符 [<空格> f]
         S           非空白字符[^s]
         w           单词字符[A-Za-z0-9_]
         W          非单词字符[^w]
     
    数量词:
         *               匹配一个字符0或多次
         +               匹配前一个字符1次或多次
         ?               匹配前一个字符0次或1次
         {m}           匹配前一个字符m次
                          {0,}等同于*     {1,}等同于+     {0,1}等同于?
         {m,n}        匹配前一个字符m至n次
     
    边界符:
         ^               匹配字符串开头,多行匹配每一行开头
         $                匹配字符串末尾,多行匹配每一行末尾
         A               仅匹配字符串开头
                        仅匹配字符串末尾
                        匹配w和W之间
     
         (^ 放在字符集合外:表示匹配字符串开头
                放在字符集合里:表示非)
     
     
    逻辑、分组:
         |                          左右表达式任意匹配一个
                                    先匹配左边一旦成功则跳过匹配右边
                                    如果|没有包含在()中,匹配整个正则表达式
         (...)                      分组匹配,从左到右,每遇到一个编号+1,分组后可加数量词
         (?P<name>...)      除了分组序号外,指定一个name的别名
         <number>          引用编号为<number>的分组匹配到的字符串
         (?P=name)           引用别名为<name>的分组匹配到的串
     
     
    方法、函数:
         match()               决定RE是否在字符串刚开始的位置匹配
         search()              扫描字符串,找到这个RE匹配的位置
         findall()               找到RE匹配的所有子串,并把它们作为一个列表返回
         finditer()              找到RE匹配的所有子串,并把它们作为一个迭代器返回
     
                                   如果没有匹配到,match()和search()将返回None,否则返回MatchObject实例
     
    MatchObject实例方法:
         group()               返回被RE匹配的字符串
         start()                 返回匹配开始的位置
         end()                  返回匹配结束的位置
         span()                 返回一个元组包含匹配(开始,结束)的位置
     
     
                        p = re.compile(...)
                        m = p.match('stirng goes here')
                        if m:
                             print 'Match found:',m.group()
                        else:
                             print 'No match'
     
    模块级函数:
         match()
         search()
         sub()                    re.sub(正则表达式string,要替换的string,原始字符串)
         subn()                  和sub用法一样,会同时返回替换的次数
         split()                   re.split(正则表达式,原始字符串string)
         findall()
     
     
    re属性(编译标志flag):
         DOTALL,S               使.匹配包括换行在内的所有字符
         IGNORECASE,I         使匹配对大小写不敏感
         LOCAL,L                  使本地化识别(locale-aware)匹配(法语等)
         MULTILINE,M           多行匹配,影响^和$
         VERBOSE,X             能够使用REs的verbose状态,使之被组织得更清晰易懂

    分组:
         (...)
         (...|...)
     
         当有分组时,findall返回的结果会优先返回分组(括号中)中的数据
  • 相关阅读:
    droid开发:如何打开一个.dcm文件作为位图?
    AndroidStudio3.0 Canary 8注解报错Annotation processors must be explicitly declared now.
    Android 异步加载神器Loader全解析
    Android实现RecyclerView的下拉刷新和上拉加载更多
    Android之ViewFlipper的简单使用
    云计算之路-阿里云上:2014年6月11日17点遇到的CPU 100%状况团队
    云计算之路-阿里云上:黑色1秒,微软的问题还是阿里云的问题?团队
    [网站公告]18:07-18:20阿里云SLB故障造成网站不能正常访问团队
    上周热点回顾(6.2-6.8)团队
    云计算之路-阿里云上:受够了OCS,改用ECS+Couchbase跑缓存团队
  • 原文地址:https://www.cnblogs.com/fanchangfa/p/3721651.html
Copyright © 2011-2022 走看看