Python基础 标准库概览(22)

1 篇文章 0 订阅
1 篇文章 0 订阅

Python3 标准库概览

可以去官方网站搜索:https://www.python.org/
首先Documenation->Docs->Python3.X Docs->Library Reference

1.正则表达式库re

简单的实例:

import re

def re_test():

    # 函数的定义中,可以看出返回的是一个匹配对象,它单独使用就没有任何意义,需要和findall(), search(), match()搭配使用,以match()举例。
    c = 'cat'
    p = re.compile('c')
    u = p.match(c)
    print(u)  # 从字符串开头往后匹配


if __name__ == '__main__':
    re_test()
    # compile()与match()一起使用,可返回一个class、str、tuple。
    # 但是一定需要注意match(),从位置0开始匹配,匹配不到会返回None,返回None的时候就没有span/group属性了,并且与group使用,返回一个单词‘Hello’后匹配就会结束。
元字符:
序号符号描述使用
1.(点)在默认模式下,这与除 newline 以外的任何字符匹配。如果指定了DOTALL标志,则与包括 newline 在内的任何字符匹配。匹配除“\n”之外的任何单个字符。'..a'匹配'dda'而不匹配'dfr'
2^(关注者)匹配字符串的开头,并且在MULTILINE模式下,在每个新建线之后也立即匹配。字符串开始。'^hello'匹配'helloworld'而不匹配'aaaahellobbb'
3$匹配字符串的末尾或字符串末尾的 newline 之前,在MULTILINE模式下,在newline 之前也匹配。 匹配"foo"和"foobar",而正则表达式仅匹配"foo"。更有意思的是,在匹配"foo2"中搜索正常,但在MULTILINE模式下搜索"foo1";在中搜索单个将找到两个(空)匹配项:一个在换行之前,一个在字符串的末尾。foofoo$foo.$'foo1\nfoo2\n'$'foo\n'。字符串结尾。'world$'匹配'helloworld'而不匹配'worldobbb'
4*使生成的 RE 匹配前一个 RE 的 0 或更多重复,尽可能多重复。 将匹配"a","ab"或"a",后跟任意数量的"b"。ab*。匹配前面的子表达式任意次(贪婪匹配)。‘ca*t’匹配’caaaaaaaaat’匹配’ct’ 不匹配’cayt’
5+使生成的 RE 匹配前一个 RE 的 1 个或更多重复。 将匹配"a",后跟任何非零数的'b';它不会匹配只是'a'。ab+。匹配前面的子表达式一次或多次(大于等于1次)(贪婪匹配)。‘ca*t’匹配’caaaaaaaaat’ 不匹配’ct’
6?使生成的 RE 匹配前一个 RE 的 0 或 1 个重复。 将匹配"a"或"ab"。ab? 匹配前面的子表达式零次或一次(贪婪匹配)。'c?t' 匹配'ct'或者't'不匹配'cct'
7{内容}指定应匹配上一个 RE 的m副本;较少的匹配导致整个 RE 不匹配。例如,将正好匹配六个字符,而不是五个字符。a{6}'a'。{m,n}m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。'ca{2,5}t'匹配'caaat'不匹配'caaaaaat'
8[]表示一个字符集。'c[abc]t' 匹配'cat'匹配'cbt' 不匹配'czt'
9|表示或。
10\d转义符号: 相当于[0-9]。只匹配一个单个数字。\d+ 匹配多个连续数字。\d{5}匹配指定个数(5个)的数字。'c\dt'匹配 'c6t'不匹配'c16t'
11\D 表示一个字符集。 'c[abc]t' 匹配'cat'匹配'cbt' 不匹配'czt'
12\s转义符号: 匹配任意空白字符[\t\n\r\r\v]'c\st'匹配'c t'不匹配'cat'
13()匹配括号内的任何正则表达式,并指示组的开始和结束;执行匹配后,可以检索组的内容,并在字符串的稍后部分使用下面描述的特殊序列进行匹配。要匹配文本或 、使用 或 或,或将它们封闭在字符类中: 。\number'('')'\(\)[(][)]。匹配括号中任意表达式。'c(a|b|c)t'匹配 'cat'匹配'cct' 不匹配'cut'
14r不会转意按照字符处理,例如,\n 在raw string中,是两个字符,\和n, 而不会转意为换行符。r‘\n\n\n\n\n\n‘
group用法
import re

def re_test():
    # 函数的定义中,可以看出返回的是一个匹配对象,它单独使用就没有任何意义,需要和findall(), search(), match()搭配使用,以match()举例。
    q = '2018-05-10'
    p = re.compile(r'(\d+)-(\d+)-(\d+)')
    m = p.match(q).group(1) + p.match(q).group(2) + p.match(q).group(3)
    n = p.match(q).groups()
    print(m) # 从字符串开头往后匹配
    print(n)
# “do(es)?”可以匹配“do”或“does”中的“do”。?等价于{0,1}
if __name__ == '__main__':
    re_test()
    # compile()与match()一起使用,可返回一个class、str、tuple。
    # 但是一定需要注意match(),从位置0开始匹配,匹配不到会返回None,返回None的时候就没有span/group属性了,并且与group使用,返回一个单词‘Hello’后匹配就会结束。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值