'''
作者:lg
日期:2019/10/20
文件描述:
缺陷：
'''

# 字符组 ： [字符组]
# 在同一个位置可能出现的各种字符组成了一个字符组，在正则表达式中用[]表示
# 字符分为很多类，比如数字、字母、标点等等

# [0123456789]
# [0-9]
# [a-z]
# [A-Z]
# [0-9a-fA-F]

# 元字符
# 匹配特殊范围的字符
# . 	匹配除换行符以外的任意字符
# \w	匹配字母或数字或下划线
# \s	匹配任意的空白符
# \d	匹配数字
# \n	匹配一个换行符
# \t	匹配一个制表符
# \b	匹配一个单词的结尾
# ^	    匹配字符串的开始
# $	    匹配字符串的结尾
# \W	匹配非字母或数字或下划线
# \D	匹配非数字
# \S	匹配非空白符
# a|b	匹配字符a或字符b
# ()	匹配括号内的表达式，也表示一个组
# [...]	匹配字符组中的字符
# [^...]	匹配除了字符组中字符的所有字符

# 量词(默认是贪婪匹配)
# *	重复零次或更多次
# +	重复一次或更多次
# ?	重复零次或一次

#         *
#    ?          +
# 0-------1-----------无穷大

# {n}	重复n次
# {n,}	重复n次或更多次
# {n,m}	重复n到m次

# 在量词后面加 '?' 变成非贪婪匹配

# 分组 ()
# 表示作为一个整体,整体出现,整体出现的次数或整体不出现

# 转义符 '\'  !!!
# 在python的字符串里,'\'有特殊的含义,需要在所有(包括正则表达式与待匹配字符串)字符串前面加r,取消\的特殊意义
# 正则	    待匹配字符       说明
# \\n	    \n	 	    转义\之后变成\\，即可匹配
# "\\\\n"	'\\n'	 	如果在python中，字符串中的'\'也需要转义，所以每一个字符串'\'又需要转义一次
# r'\\n'	r'\n'	 	在字符串之前加r，让整个字符串不转义

# .*?的用法
#        .*?A
# 一直匹配,直到遇见第一个'A'为止
#         .*A
# 一直匹配,直到遇见最后一个'A'为止

# flags有很多可选值：
# re.I(IGNORECASE)忽略大小写，括号内是完整的写法
# re.M(MULTILINE)多行模式，改变^和$的行为
# re.S(DOTALL)点可以匹配任意字符，包括换行符
# re.L(LOCALE)做本地化识别的匹配，表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境，不推荐使用
# re.U(UNICODE) 使用\w \W \s \S \d \D使用取决于unicode定义的字符属性。在python3中默认使用该flag
# re.X(VERBOSE)冗长模式，该模式下pattern字符串可以是多行的，忽略空白字符，并可以添加注释

