匹配{不一定要加\
    克林闭包 Kleene closure 重复0次或n次
    正闭包 Positive closure 重复1次或n次
    \w 匹配字母或数字或下划线或汉字 等价于 ‘[^A-Za-z0-9_]’
    \d 匹配数字
    \s 匹配任意的空白符
    \b 匹配单词的开始或结束
    ^ 行首
    $ 行尾
    {n} n 是一个非负整数。匹配确定的 n 次。例如,’o{2}’ 不能匹配 “Bob” 中的 ‘o’,但是能匹配 “food” 中的两个 o。
    {n,} n 是一个非负整数。至少匹配n 次。例如,’o{2,}’ 不能匹配 “Bob” 中的 ‘o’,但能匹配 “foooood” 中的所有 o。’o{1,}’ 等价于 ‘o+’。’o{0,}’ 则等价于 ‘o‘。
    {n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,”o{1,3}” 将匹配 “fooooood” 中的前三个 o。’o{0,1}’ 等价于 ‘o?’。请注意在逗号和两个数之间不能有空格。
    .
    ? 尽可能少匹配
    [\s\S]* 匹配多行任意内容
    re.compile 加快重复匹配速度
    re.match 从头匹配,返回第一个匹配的结果,用s.group也能读后面的匹配
    re.search 返回第一个匹配的结果,用s.group也能读后面的匹配
    re.findall 返回所有匹配结果
    re.finditer 以迭代器形式返回
    re.split 有大量重复格式的模式时使用,返回分割后的列表
    re.compile的一些参数

    1. 原来格式为表格(table),转换较复杂,未转换,需要手动复制一下
    2. {"cells":[{"textAlign":"left","verticalAlign":"middle","wrap":true,"backColor":"rgb(250, 250, 250)","value":"修饰符"},{"textAlign":"left","verticalAlign":"middle","wrap":true,"backColor":"rgb(250, 250, 250)","value":"描述"},{"textAlign":"left","verticalAlign":"middle","wrap":true,"value":"re.I"},{"textAlign":"left","verticalAlign":"middle","wrap":true,"value":"使匹配对大小写不敏感"},{"textAlign":"left","verticalAlign":"middle","wrap":true,"value":"re.L"},{"textAlign":"left","verticalAlign":"middle","wrap":true,"value":"做本地化识别(locale-aware)匹配"},{"textAlign":"left","verticalAlign":"middle","wrap":true,"value":"re.M"},{"textAlign":"left","verticalAlign":"middle","wrap":true,"value":"多行匹配,影响 ^ 和 $"},{"textAlign":"left","verticalAlign":"middle","wrap":true,"value":"re.S"},{"textAlign":"left","verticalAlign":"middle","wrap":true,"value":"使 . 匹配包括换行在内的所有字符"},{"textAlign":"left","verticalAlign":"middle","wrap":true,"value":"re.U"},{"textAlign":"left","verticalAlign":"middle","wrap":true,"value":"根据Unicode字符集解析字符。这个标志影响 \\w, \\W, \\b, \\B."},{"textAlign":"left","verticalAlign":"middle","wrap":true,"value":"re.X"},{"textAlign":"left","verticalAlign":"middle","wrap":true,"value":"该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。"}],"heights":[40,40,40,40,40,40,40],"widths":[70,522]}

    不开re.S模式下匹配多行
    把 . 改为 (?:.|\n)
    例子

    import matplotlib.pyplot as plt
    import re
    path = "/mnt/data/image_ae/HSJA/cifar10resnet/figs/log.txt"
    with open(path, "r") as f:
        text = f.read()