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对象来进行查找。

        

  • 相关阅读:
    leetcode:655. 输出二叉树
    leetcode:763. 划分字母区间
    leetcode:3. 无重复字符的最长子串
    leetcode:2. 两数相加
    leetcode每日一题:409. 最长回文串
    leetcode:1381. 设计一个支持增量操作的栈
    leetcode:1380. 矩阵中的幸运数
    [数据结构] 迷宫问题(栈和队列,深搜和广搜)
    [数据结构] N皇后问题
    [2011山东ACM省赛] Sequence (动态规划)
  • 原文地址:https://www.cnblogs.com/stin/p/8315927.html
Copyright © 2011-2022 走看看