Table:

literal: 普通的逐字匹配.
"|": 该操作符具有延伸性(贪婪),例: at|home 匹配的是at或home,而不是t或h.
'.': 任意一个字符(不含\n)
"^": 匹配字符串起始部分
"$": 匹配字符串结束部分
"": 匹配0次或多次前面出现的表达示,只对前一位有效(非延展),重复次数含前面的字符, 如果样本为:"aga23gaafa",那把表达式r"8"是能匹配到内容的,内容是NONE,因为这个表达式8如果按重复0次算本身就是NONE.
"+": 匹配1次或多次前面出现的表达式,只对前一位有效(非延展),重复次数注意事项同上.
"?": 匹配0次或1次前面出现的表达式,只对前一位有效(非延展),重复次数注意事项同上.
"?": ?同时还被重载赋以另一个含义: 当'?'用在闭合操作符后面,它将要求正则引擎尽可能少的匹配. (
和+是闭合操作符),如: 3+含义为: 3或33或333或3333..., 如果是3+?意思为: 3 (取最不贪婪的值,让"+"代表重复一次的含义).

"{N}": 匹配之前的字符N次, N次包含了前面字符本身(非延展).如: 53{2}就是匹配"533"的意思.
"{MN}": 匹配之前字符N-M次,其它同上.
"[...]": 匹配字符集内的任一字符.如:[mark]匹配m或a或r或k
"[x-y]": 匹配字符集内一个区间,如:[a-zA-Z]
"(...)": 封闭正则

'\d': 任意十进制数, '\D'相反
'\w': 任意字母或数字(和[a-zA-Z0-9]同意), '\W'相反
'\s': 匹配空格,tab等. '\S'相反.
'\b': 匹配单词边界,'\B'相反. 就是[a-zA-Z0-9]与[^a-zA-Z0-9]之间的边界内容.如:我希望在字符串"give me the themometer"中匹配单词'the' 应该使用"\bthe\b".
'\N': 匹配己保存的子组.
'\charactor': 转义特殊字符为本身, "\?"就是?号本身.

re module:
re.match(pattern,string,flag) //从字符串开始匹配
re.search(pattern,string,flag) //从字符串中间开始匹配(只匹配首次出现并符合条件的字符内容)

matched object:
    m.group(index)  //如果是参数index为0或无参数, 返回整个配置结果,如果index为>=1,则返回相应子组的配置内容.
    m.groups()以一个tuple的形式返回所有子组(子组作为tuple中的元素返回)

re.findall(pattern,string,flag)  //工作方式和search相同,但是返回一个list, 1.如果只成功匹配一次,那么所有子组为list中的元素. 2.如果多次成功匹配,list由元组构成,每一次成功匹配是list中的一个tuple, 每一个成功匹配的子组为List中的tuple中的元素.

re.finditer(pattern,string,flag) //工作方式和search相同,但是返回内容为一个包含matched object的迭代器.

re.sub(pattern,new_str,string)  //使用new_str替代匹配pattern的string中的内容.返回值为替换后的string.
re.subn(pattern,new_str,string)  //工作内容和re.sub相同,返回值为一个包含2个元素的tuple,  tuple[0]为替换后的新字符串, tuple[1]为替换的次数.
注: 可以使用\N指定匹配的某子组作为替换内容.(N为pattern的子组编号)
例: re.sub(r'(\d{1,2})/(\d{1,2})/(\d{2}|\d{4})', r'\2/\1/\3', 2/20/1991),意思是把MM/DD/YYYY换成DD/MM/YYYY的时间格式.

re.split(pattern,string)  //使用pattern作为分隔符对原字符串进行分割,分割后的元素形成一个List并返回.

扩展符:
    (?i) //忽略大小写  (?m) //允许多行
    (?=xxx)  //正向前视断言, 要匹配的内容后边必须有xxx跟随.  
        例:  "0 input errors, 0 CRC, 0 frame, 0 overrun, 0 "  如果我想匹配CRC之前的数字,但匹配内容不想含CRC, 那么pattern为 r'\d+(?=\sCRC)'
    (?!xxx)  //负向前视断言, 要匹配的内容后边必须没有xxx跟随.
    (?<=xxx) //正向后视断言, 要匹配的内容前边必须有xxx.
        例: 'MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec', 如果我想匹配BW之后的数字,但匹配内容不包含BW,那么pattern为 r'(?<=BW\s)\d+'
    (?