灏天文库

自己写个正则引擎 · NFA 到 DFA

作者: 灏天 · 收录于 编程与开发

内容摘要

 自己写个正则引擎 · NFA 到 DFA 灏 灏天文库 · 编程与开发 第 8 期 · 第一季收官 编程与开发 · 第 8 期 · 第一季收官 自己写个正则引擎, NFA 到 DFA Thompson 算法 · regex engine internals 正则不是魔法,是 状态机 。Thompson 算法把正则编译成 NFA(非确定有限自动机),NFA 能跑但每步要试多条路;子集构造把 NFA 转成 DFA(确定有限自动机),DFA 每步只有一条路,快但占内存。理解这条链路,正则引擎就不神秘了。 ⏱ 约 11 分钟 🎯 用正则但不懂它内部的人 📦 源:build-your-own-x §4 01 一个反共识:正则是状态机,不是魔法 写 a(b|c)*d 能匹配 "abcbcd",看起来像魔法。其实它被编译成了一台状态机,匹配就是在这台机器上走。 正则 → Thompson → NFA → 子集构造 → DFA → 匹配 NFA(非确定):一个状态遇到一个字符可能跳到多个状态,要同时维护"当前可能在哪几个状态"。好建、好理解,但匹配时要跟踪状态集合。

打开完整知识页 返回工坊集