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' |
14 | r | 不会转意按照字符处理,例如,\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’后匹配就会结束。