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返回的结果会优先返回分组(括号中)中的数据
  • 相关阅读:
    LOJ-10108(欧拉回路+并查集)一个图至少用几笔画成
    hdu-1878(欧拉回路)
    LOJ-10106(有向图欧拉回路的判断)
    欧拉回路
    LOJ-10105(欧拉回路模板,套圈法,递归)
    LOJ-10102(求A到B之间的割点)
    LOJ-10103(求删去割点后最多的连通分量)
    LOJ-10102(桥的判断)
    【XSY2278】【HDU5669】the Red Sun(线段树+dijkstra)
    【XSY2434】【CF787D】遗产(线段树+dijkstra)
  • 原文地址:https://www.cnblogs.com/fanchangfa/p/3721651.html
Copyright © 2011-2022 走看看