为了了解正则引擎的内部工作原理,使用 javascript 实现的一个最简的正则引擎,它支持了如下的正则元素:
- ()
- ?
- +
- *
- |
- 对给定的正则表达式使用使用调度场算法,将其转换为后缀表达式的形式
- 对转换后的后缀表达式,使用Thompson构造法来构造一个非确定有限状态自动机(NFA)
- 逐个的取出需要进行匹配的字符串中的字符,对状态机进行状态转换
- 如果状态机最终停留在接收状态(Accepting State),则说明正则表达式与需要匹配的字符串相匹配
- 否则如果状态机提前终止或者最终不是停留在接收状态,则说明正则表达式与需要匹配的字符串不匹配
npm install # 安装依赖
npm run test # 运行单元测试
npm run build # 构建
npm run re 'a|b' a # 运行程序查看匹配结果