标准字符集合 :(大写是相反的意思)
    \d 任意一个数字
    \w 任意一个字母或数字或下划线
    \s 空格,制表符,换行符等空白字符的其中任意一个
    . 匹配任意一个字符,除了换行符

    转义字符:
    \n 换行符
    \t 制表符
    \ \本身

    自定义字符集合:
    []: 匹配方括号中任意一个字符
    [^abc]: 匹配“a”,“b”,“c”之外的任意一个字符
    [f-k]: 匹配“f-k”之间的任意一个字母
    [^A-F0-3]: 匹配“A-F”,“0-3” 之外的任意一个字符

    1. 正则表达式的特殊符号,被包含到中括号中,则失去特殊意义,除了 ^, - 之外。
    2. 标准字符集合,除小数点外,如果被包含在中括号中,自定义字符集合,将包含该集合。

    例如:[\d.-+] : 匹配 数字(\d),小数点(. 小数点失去特殊意义),+(+),- (- -在[]中没有失去特殊意义,所有需要加)

    量词:
    {n}: 表达式重复n次
    {m,n}: 表达式至少重复m次,最多重复n次 (贪婪模式)
    {m,}: 表达式至少重复m次 (贪婪模式)
    ? : 匹配表达式0次或者1次,相当于{0,1}
    +: 表达式至少出现1次,相当于{1,}
    *: 表达式不出现或出现任意次,相当于{0,}

    1.匹配次数中的贪婪模式(匹配字符越多越好,默认模式)
    2.匹配次数中的非贪婪模式(匹配字符越少越好,修饰匹配次数的特殊符号后再加上一个“?)

    \d{5}: 匹配连续的6位数字
    (\d\d){5}: 匹配连续的10位数字
    \d{3,7}?: 匹配连续的3位数字, (非贪婪模式)


    字符边界:(本组标记匹配的不是字符而是位置,符合某种条件的位置)
    ^: 与字符串开始的地方匹配 ^i
    $: 与字符串结束的地方匹配 i$
    \b: 匹配一个单词的边界 前面的字符和后面的字符不全是\w。

    匹配模式:
    IGNORECASE: 忽略大小写
    (1)匹配时忽略大小写
    (2)默认情况下,正则表达式是要区分大小写的
    SINGLELINE: 单行模式
    (1)整个文本看做一个字符串,只有一个开头,一个结尾
    (2)使小数点“.”可以匹配包含换行符在内的任意字符
    MULTILINE: 多行模式
    (1) 每行都是一个字符串,都有开头和结尾
    (2) 在指定了MULTILINE之后,如果需要仅匹配整个文本字符串开始和结束位置,可以使用\A和\Z


    选择符和分组:
    | : 左右两边表达式之间“或”关系,匹配左边或者右边
    () :捕获组
    (1):在被修饰匹配次数的时候,括号中的表达式可以作为整体被修饰
    (2):取匹配结果的时候,括号中的表达式匹配到的内容可以被单独得到
    (3):每一对括号会分配一个编号,使用()捕获根据左括号的顺序从1开始自动编号。捕获元素编号为零的第一个捕获是由整个正则表达式模式匹配的文本

    (?:Expression):一些表达式中,不得不使用(),但又不需要保存()中表达式匹配的内容,这时可以用非捕获组来抵消使用()带来的副作用。

    反向引用(\n):
    (1)每一对()会分配一个编号,使用()的捕获根据左括号的顺序从1开始自动编号
    (2)通过反向引用,可以对分组已捕获的字符串进行引号