个人想法:分析一个文件的功能,来源于需求
re.py是用来做什么的,在文件内实现了什么小功能,这些小功能怎样被引用,而构建这个文件用了什么写法,做到知其然而知所以然,我觉得很重要。
第一点先搞清楚,我来自哪里
import enum
import sre_compile
import sre_parse
import functools
try:
import _locale
except ImportError:
_locale = None
引入了enum(枚举),sre_compile(编译),sre_parse(分析),functools(函数工具),或_locale(本地)
第二点,我要实现什么功能
# public symbols
__all__ = [
"match", "fullmatch", "search", "sub", "subn", "split",
"findall", "finditer", "compile", "purge", "template", "escape",
"error", "Pattern", "Match", "A", "I", "L", "M", "S", "X", "U",
"ASCII", "IGNORECASE", "LOCALE", "MULTILINE", "DOTALL", "VERBOSE",
"UNICODE",
]
第三点,我要实现的功能缺乏些那些元素,我要添加
__version__ = "2.2.1"
class RegexFlag(enum.IntFlag):
ASCII = sre_compile.SRE_FLAG_ASCII # assume ascii "locale"
IGNORECASE = sre_compile.SRE_FLAG_IGNORECASE # ignore case
LOCALE = sre_compile.SRE_FLAG_LOCALE # assume current 8-bit locale
UNICODE = sre_compile.SRE_FLAG_UNICODE # assume unicode "locale"
MULTILINE = sre_compile.SRE_FLAG_MULTILINE # make anchors look for newline
DOTALL = sre_compile.SRE_FLAG_DOTALL # make dot match newline
VERBOSE = sre_compile.SRE_FLAG_VERBOSE # ignore whitespace and comments
A = ASCII
I = IGNORECASE
L = LOCALE
U = UNICODE
M = MULTILINE
S = DOTALL
X = VERBOSE
# sre extensions (experimental, don't rely on t