zoukankan      html  css  js  c++  java
  • python re正则

    概述
    https://www.cnblogs.com/zjltt/p/6955965.html
    元字符
    元字符在字符集中不起作用
    用于取消元字符
    语法
    说明
    表达式实例
    完整匹配的字符串
    一般字符
    匹配自身
    abc
    abc
    .
    匹配任意字符( 除外)
    ab.
    abc
    [...]
    字符集(对应位子可以是字符集中的任意字符)
    a[bcd]e
    abe
    ace
    ade
    预定义字符集(可以写在字符集[...]中)
     
     
     
    d
    数字:[0-9]
    adc
    a1c
    D
    非数字[^d]
    aDc
    abc
    s
    空白字符:[<空格> fv]
    asc
    a c
    S
    非空白字符:[^s]
    aSc
    abc
    w
    单词字符:[A-Za-z0-9_]
    awc
    abc
    W
    非单词字符:[^w]
    aWc
    a c
    数量词(用在字符或(...)之后)
     
     
     
    *
    匹配前一个字符0次或无限次
    abc*
    ab
    abccc
    +
    匹配前一个字符1次或无限次
    abc+
    abc
    abccc
    匹配前一个字符0次或1次
    abc?
    ab
    abc
    {m}
    匹配前一个字符m次
    ab{2}c
    abbc
    {m,n}
    匹配前一个字符m至n次
    ab{1,2}c
    abc
    abbc
    *? +? ?? {m,n}?
    使* + {m,n}变成非贪婪模式
     
     
    边界匹配
     
     
     
    ^
    匹配字符串开头
    在多行模式中匹配每一行开头
    ^abc
    abc
    $
    匹配字符串末尾
    多行模式中每一行末尾
    $abc
    abc
    逻辑和分组
     
     
     
    |
    左右任意匹配一个
    abc|def
    abc
    def
    (...)
    分组
    (abc){2}
    a(123|456)c
    abcabc
    a123c
    a456c
    (?P<name>...)
    分组,原有编号指定别名
    (?P<id>abc){2}
    abcabc
    (?p=name)
    引用别名为<name>分组的字符串
    (?P<id>d)abc(?P=id)
    1abc1
     

    正则匹配模式表

    标志

    含义

    re.S(DOTALL)

    使.匹配包括换行在内的所有字符

    re.I(IGNORECASE)

    使匹配对大小写不敏感

    re.L(LOCALE)

    做本地化识别(locale-aware)匹配,法语等

    re.M(MULTILINE)

    多行匹配,影响^和$

    re.X(VERBOSE)

    该标志通过给予更灵活的格式以便将正则表达式写得更易于理解

    re.U

    根据Unicode字符集解析字符,这个标志影响w,W,,B

     

     

     

     

    执行匹配
    方法/属性
    作用
    match()
    字符串开始位置匹配,成功返回MatchObject,失败返回None
    search()
    扫描字符串,找到RE匹配的位置,成功返回MatchObject,失败返回None
    findall()
    找到RE匹配的所有子串,作为一个列表返回
    finditer()
    找到RE匹配的所有子串,作为一个迭代器返回    
     
     
    MatchObject实例方法
     
    方法/属性
    作用
    group()
    返回被RE匹配的字符串
    start()
    返回匹配开始的位置
    end()
    返回匹配结束的位置
    span()
    返回一个元祖包含匹配(开始,结束)的位置
     
     
    match函数
    语法
    re.match(pattern,string,flags=0)
    参数说明
     
    参数
    描述
    patten
    正则表达式
    string
    被搜索匹配的字符串,字符串开始
    flags
    正则表达式修饰符
    re.match匹配成功返回matchOject,失败返回None,通过group(num)或groups()获取匹配对象
    匹配对象的方法  
    匹配对象的方法
    描述
     group(num=0)
    返回整个匹配(指定分组)
    groups()
    以元祖形式返回匹配子组
    例子
    import re
    line = "Dogs are smart than caters"
    matchObject = re.match(r'(.*) are .* than (.*)',line,re.M|re.I)
    if matchObject:
        print "matchObject group()",matchObject.group()
        print "matchObject group(1)",matchObject.group(1)
        print "matchObject group(2)",matchObject.group(2)
    else:
        print "No match"
    当执行上面的代码,它产生以下结果:
    matchObject group() Dogs are smart than caters
    matchObject group(1) Dogs
    matchObject group(2) caters
     
    search函数
    语法
    re.search(pattern,string,flags=0)
    参数说明
    参数
    描述
    patten
    正则表达式
    string
    被搜索匹配的字符串,字符串开始
    flags
    正则表达式修饰符
    re.search匹配成功返回searchOject,失败返回None,通过group(num)或groups()获取匹配对象
    匹配对象的方法
    匹配对象的方法
    描述
     group(num=0)
    返回整个匹配(指定分组)
    groups()
    以元祖形式返回匹配子组
     
    例子
    import re
    line = "Dogs are smart than caters"
    seachObject = re.search(r'(.*) are .* than (.*)',line,re.M|re.I)
    if seachObject:
        print "searcObject.group():",seachObject.group()
        print "searcObject.group(1):",seachObject.group(1)
        print "searcObject.group(2):",seachObject.group(2)
    else:
        print "No search"
    当执行上面的代码,它产生以下结果
    searcObject.group(): Dogs are smart than caters
    searcObject.group(1): Dogs
    searcObject.group(2): caters

     

     
  • 相关阅读:
    gems gems gems
    poj 6206 Apple
    lightoj1341唯一分解定理
    lightoj1370欧拉函数
    约瑟夫环lightoj1179
    拓展欧几里得算法
    RMQ算法
    poj1502MPI Maelstrom
    poj1860Currency Exchange
    生成全排列
  • 原文地址:https://www.cnblogs.com/yangyangchunchun/p/9352003.html
Copyright © 2011-2022 走看看