• Python学习笔记8:标准库之正則表達式


    Python拥有强大的标准库。从如今起,開始学习标准库中提供的一些经常使用功能。
    首先看正則表達式(regular expression),它的主要功能是从字符串(string)中通过特定的模式(pattern),搜索想要找到的内容。


    比如:要从一个字符串中找出全部的数字,我们能够这样做:

    import re
    str = "int2str"
    m = re.search("[0-9]",str)
    print(m.group(0))
    输出:2
    re.search()接收两个參数,第一个正則表達式。是匹配条件。
    re.search()假设从第二个參数是目标字符串。


    返回一个对象m,通过m.group()查看搜索到的结果;没有找到。则返回None。

    经常使用函数:
    m = re.search(pattern, string)搜索整个字符串,直到发现符合的子字符串。
    m = re.match(pattern, string)从头開始检查字符串是否符合正則表達式。必须从字符串的第一个字符開始就相符。
    对于返回的m, 我们使用m.group()来调用结果。



    str = re.sub(pattern, replacement, string)在string中利用正则变换pattern进行搜索,对于搜索到的字符串,用还有一字符串replacement替换。
    返回替换后的字符串str。

    re.split()依据正則表達式切割字符串, 将切割后的全部子字符串放在一个表(list)中返回
    re.findall()依据正則表達式搜索字符串。将全部符合的子字符串放在一给表(list)中返回


    正則表達式:
    1)单个字符:


    .          随意一个字符


    a|b        字符a或字符b


    [afg]      a或者f或者g的一个字符


    [0-4]      0-4范围内的一个字符


    [a-f]      a-f范围内的一个字符


    [^m]       不是m的一个字符


    s         一个空格


    S         一个非空格


    d         [0-9]


    D         [^0-9]


    w         [0-9a-zA-Z]


    W         [^0-9a-zA-Z]


    2)反复


    紧跟在单个字符之后,表示多个这样类似的字符


    *         反复 >=0 次


    +         反复 >=1 次


    ?         反复 0或者1 次


    {m}       反复m次。比方说 a{4}相当于aaaa,再比方说[1-3]{2}相当于[1-3][1-3]


    {m, n}    反复m到n次。

    比方说a{2, 5}表示a反复2到5次。

    小于m次的反复,或者大于n次的反复都不符合条件。
    比如:
    [0-9]{3,5}       9678


    a?b              b


    a+b              aaaaab


    3) 位置


    ^         字符串的起始位置


    $         字符串的结尾位置


    比如:
    正则表达 相符的字符串举例 不相符字符串


    ^ab.*c$ abeec cabeec


    4)返回控制


    有可能对搜索的结果进行进一步精简信息。比方以下一个正則表達式:
    output_(d{4})


    该正則表達式用括号()包围了一个小的正則表達式。d{4}。 这个小的正則表達式被用于从结果中筛选想要的信息(在这里是四位数字)。
    这样被括号圈起来的正則表達式的一部分。称为群(group)。
    我们能够m.group(number)的方法来查询群。group(0)是整个正则表达的搜索结果,group(1)是第一个群……

    import re
    m = re.search("output_([0-9]{4})", "output_1986.txt")
    print(m.group(0),m.group(1))
    输出:
    ('output_1986', '1986')


    我们还能够使用(?P<name>...)为group命名,以便更好地使用m.group查询:
    import re
    m = re.search("output_(?P<year>[0-9]{4})", "output_1986.txt")
    print(m.group("year"))

    输出:1986


    坚持每天都能学一点新东西。好了。今天就先到这里了。

  • 相关阅读:
    Linq to OBJECT延时标准查询操作符
    LINQ to XML
    动态Linq(结合反射)
    HDU 1242 dFS 找目标最短路
    HDu1241 DFS搜索
    hdu 1224 最长路
    BOJ 2773 第K个与m互质的数
    ZOJ 2562 反素数
    2016 ccpc 杭州赛区的总结
    bfs UESTC 381 Knight and Rook
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/6801397.html
Copyright © 2020-2023  润新知