实现简单的纯正则表达式引擎: 支持的操作符:
'|' 并联符号
'*' 重复零次以上
'?' 重复一次或零次
'+' 重复一次以上
{n,m} 重复n次至m次
{n} 重复n次
{n,} 重复n次以上
'\' 转义符
'.' 任何字符
[abcd] abcd任何一个字符
[a-z] 字符a至z中任何一个
[^a-c] 除字符abc之外的任何字符
正则表达式引擎工作流程:
- 语法分析,将正则表达式转化为AST
- 根据 AST 构建 NFA, 采用Thompson构造法
- 将NFA,转化为 DFA, 采用子集构造法
- 模拟匹配DFA