zoukankan      html  css  js  c++  java
  • python之正则表达式

                                  

                                   

      常用的匹配语法:

    方法

    说明

    re.match

    从头匹配,返回对象,仅匹配一次就返回

    re.search

    从任意位置匹配,返回对象,仅匹配一次就返回

    re.findall

    返回所有匹配上的

    re.splitall(findall相反)

    以匹配到的字符当做列表分隔符

    re.sub

    匹配字符并替换

     常用的匹配模式:

    模式

    说明

    re.I(re.IGNORECASE)

    忽略大小写(括号内是完整写法,下同)

    M(MULTILINE)

    多行模式,改变'^''$'的行为(参见上表)

    S(DOTALL)

    匹配所有的字符,包括换行符/n

    X(VERBOSE)

    忽略规则表达式中的空白,并允许使用’#’来引导一个注释

    常用的正则表达式符号:

    符号

    说明

    .

    默认匹配除 之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行

    ^或A

    匹配字符开头,若指定flags MULTILINE,这种也可以匹配上(r"^a"," abc eee",flags=re.MULTILINE)

    $或

    匹配字符结尾,或e.search("foo$","bfoo sdfsf",flags=re.MULTILINE).group()也可以

    *

    匹配*号前的字符0次或多次,re.findall("ab*","cabb3abcbbac")  结果为['abb', 'ab', 'a']

    +

    匹配前一个字符1次或多次,re.findall("ab+","ab+cd+abb+bba") 结果['ab', 'abb']

    ?

    匹配前一个字符1次或0次

    {m}

    匹配前一个字符m次

    {n,m}

    匹配前一个字符n到m次,re.findall("ab{1,3}","abb abc abbcbbb") 结果'abb', 'ab', 'abb']

    |

    匹配|左或|右的字符,re.search("abc|ABC","ABCBabcCD").group() 结果'ABC'

    (...)

    分组匹配,re.search("(abc){2}a(123|456)c", "abcabca456c").group() 结果 abcabca456c

    d

    匹配数字0-9

    D

    匹配非数字

    w

    匹配[A-Za-z0-9]

    W

    匹配非[A-Za-z0-9]

    s

    匹配空白字符、 、 、 , re.search("s+","ab c1 3").group() 结果 ' '

    (?P<name>...)

    分组匹配 re.search("(?P<province>[0-9]{4})(?P<city>[0-9]{2})(?P<birthday>[0-9]{4})","371481199306143242").groupdict("city")

    结果{'province': '3714', 'city': '81', 'birthday':'1993'}

    两个小Tip:

    1、python里的原生字符解决了 ""问题,如匹配"\d",只需在字符串前面加个r,写成r"d"表示该字符串是原生字符串,无需转义 。       

    2、compile的作用:加速,如果要多次使用同一规则来进行匹配的话,可以使用re.compile函数来将规则预编译,使用编译过返回的Regular Expression Object或叫做Pattern对象来进行查找。

        

  • 相关阅读:
    将Ajax 中数组转换成字符串 封装成类
    网页中删除数据弹出提示框
    pdo连接数据库
    pdo 的配置与启用
    php中常用的运算符
    [JZOJ 5912] [NOIP2018模拟10.18] VanUSee 解题报告 (KMP+博弈)
    [JZOJ 5910] [NOIP2018模拟10.18] DuLiu 解题报告 (并查集+思维)
    [JZOJ 5852] [NOIP2018提高组模拟9.6] 相交 解题报告 (倍增+LCA)
    [JZOJ 5437] [NOIP2017提高A组集训10.31] Sequence 解题报告 (KMP)
    [JZOJ 5875] [NOIP2018提高组模拟9.20] 听我说,海蜗牛 解题报告(BFS+二分)
  • 原文地址:https://www.cnblogs.com/stin/p/8315927.html
Copyright © 2011-2022 走看看