网站深度测评
refrf.dev是什么网站?
refrf.dev 是一个面向正则表达式初学者的免费开源在线教程站,站内内容本身是一本实验性的“书”,名为《Regular Expressions for Regular Folk》。
它的特点不是系统罗列语法,而是用大量可视化示例讲解,并特意挑选容易踩坑的测试用例。作者说明目标读者是正则初学者,默认读者有一点编程经验,但不涉及引擎回溯、递归正则等进阶主题。
适合谁用
- 刚开始学正则,看纯语法文档容易卡住的人。
- 更习惯“先看例子、遇到不懂再读解释”的学习方式的人。
- 想找一份可以打印出来慢慢看的正则材料的人。
内容结构 目录包括 Introduction、Basics、Character Classes、Character Escapes、Groups、Repetition、Alternation、Flags、Anchors、Lookaround、Advanced Examples、Next Steps,基本覆盖日常写正则需要的基础到中级概念。
实际使用场景 例如需要从日志里提取日期、校验表单输入格式,或读懂同事留下的一长串正则时,可以按目录直接跳到对应章节看示例,而不是从头读到尾。站内还提供单页版本,方便打印;Firefox 需开启“Print Background Colors”,Chrome 需在“More settings”里开启“Background graphics”。
其他信息
- 站点是开源项目,欢迎贡献;章节内容采用 CC BY-SA 4.0,网站源码采用 MIT 许可。
- 提供中文等外部翻译版本。
- 页面引用了 Hacker News 上的读者反馈,有人提到“前几页学到的比多年从 StackOverflow 复制正则还多”,也有人认可这种结构化、示例驱动的讲法。
如果你想系统入门正则,建议先读 Basics 和 Character Classes,再按需跳到 Groups、Anchors 等章节;遇到实际匹配问题时,用它的示例对照修改会比死记语法更快。
正则表达式初学者应该按什么顺序学习书中的章节?
按书中的目录顺序学即可,作者本身就是按“从零到能读懂常见正则”来排的:先建立字符和匹配的基本概念,再逐步加复杂度。
推荐顺序
- Introduction → Basics:先弄清正则是什么、能用来做什么,以及最基本的匹配方式。
- Character Classes → Character Escapes → Escapes:这三章连着学,重点是“哪些字符有特殊含义、怎么表示一个字符集合”。初学者最容易在这里踩坑,书中也特意选了能暴露常见误区的例子。
- Groups → Repetition → Alternation:学会把片段打包、控制重复次数、做“或”的分支。到这里已经能读懂大部分日常正则。
- Flags → Anchors:加上匹配模式(如忽略大小写)和位置约束(开头、结尾、词边界),这是从“能匹配”到“匹配得准”的关键一步。
- Lookaround → Advanced Examples → Next Steps:最后学前后查找,再用综合例子串联前面所有内容,最后看作者给的延伸方向。
为什么这样排
- 这本书是“可视化 + 例子驱动”的,作者明确说面向正则初学者,假设你有编程经验,但不讲引擎回溯、递归正则这类进阶主题。所以不必跳着去啃难的部分,按顺序走不会卡住。
- 书中刻意选了会触发常见错误的测试用例。学每一章时,建议把例子亲手改一改、故意写错,看匹配结果怎么变,这比只读讲解更贴合这本书的设计意图。
- 有读者反馈“前几页学到的东西比多年从 Stack Overflow 复制粘贴还多”,也有人喜欢这种结构化路径,而不是靠猜和试。对初学者来说,这种顺序能减少“抄来的正则看不懂”的情况。
可以配合做的事
- 每学完一章,回到上一章的例子里加一个新概念(比如给 Groups 的例子加 Anchors),检验自己是否真的理解。
- 中文读者可以直接看已有的中文翻译,遇到术语对不上时再对照英文原版章节标题。
- 如果想打印单页版通读,记得在 Firefox 打开“打印背景颜色”、Chrome 在“更多设置”里勾选“背景图形”,否则可视化的图示会缺失。
同类资源里,regex101 适合边学边实时调试,refrf.dev 这本则更适合先系统看一遍例子再上手练。
如何将这本书翻译成其他语言或参与开源贡献?
这本书本身就是开源项目,翻译和贡献都走公开渠道,不需要注册账号或申请权限。
翻译成其他语言
网站“Translations”一节明确说明:欢迎翻译,只要遵守许可协议即可。目前已列出中文翻译,由 @ElsaOOo 和 @singagain 分别发布为外部翻译。
具体做法:
- 你可以选择把译文单独发布在别处,也可以提交到本站,两种方式都受欢迎。
- 翻译内容需遵守 CC BY-SA 4.0(章节内容许可)。
- 网站源码本身使用 MIT License,若涉及改站点代码,按 MIT 处理即可。
参与开源贡献
页面写明这是 open source project,contributions are welcome。适合的贡献方式包括:
- 修正或补充示例、指出你遇到的 regex 常见坑(作者特别强调用例是为了暴露 gotchas)。
- 改进讲解文字,尤其是让例子更直观。
- 提交翻译。
- 反馈入口在“Feedback”一节,讨论也在 Hacker News 上有公开帖。
上手顺序建议
- 先读 Contents 里的章节结构,了解内容范围:Introduction、Basics、Character Classes、Character Escapes、Escapes、Groups、Repetition、Alternation、Flags、Anchors、Lookaround、Advanced Examples、Next Steps。
- 确认你要动的部分属于“章节内容”还是“网站代码”,对应不同许可。
- 翻译时优先保证示例和测试用例的准确性——这本书的定位就是 visual、example-based,例子比文字更关键。
- 有疑问先通过 Feedback 渠道沟通,避免做完才发现方向不符。
适合谁做
- 想练手开源协作、又熟悉正则基础的人。
- 想把英文技术内容本地化的译者,尤其是能同时校对示例的。
- 被这本书“例子先行”风格帮到、想回馈的读者——页面上的读者反馈里就有人提到“前几页学到的东西比多年从 StackOverflow 复制粘贴还多”。
如果你只是想用这本书,不必贡献;想参与,从 Feedback 或翻译入口开始最直接。
打印这本书的单页版本时需要注意哪些浏览器设置?
打印单页版本时,需要开启浏览器的“背景图形”类选项,否则书中的配色、高亮和图示背景可能丢失。
具体设置
- Firefox:启用“Print Background Colors”(打印背景颜色)。
- Chrome:在打印面板的“More settings”(更多设置)中勾选“Background graphics”(背景图形)。
操作提示
按普通方式打印即可,但建议先预览一遍,确认背景色和图形都正常显示再输出。
这本书的示例主要帮助避免哪些常见的正则表达式陷阱?
这本书用大量可视化和示例,重点帮初学者避开正则里最容易踩的几类坑。
常见陷阱与对应示例方向
- 转义与字符类混淆:
.、\d、\w在字符类内外含义不同,示例会展示写错后匹配范围意外扩大或缩小。 - 贪婪匹配失控:
.*默认贪婪,容易一次吞掉过多内容;书中用重复与交替章节的用例说明边界该怎么收。 - 锚点用错位置:
^、$与多行标志搭配时行为变化,示例会对比单行和多行下的匹配结果。 - 分组与捕获的副作用:括号既分组又捕获,替换或后续引用时容易拿到非预期内容;示例区分了分组用途和捕获用途。
- 交替的优先级:
a|b c这类写法会被解析成a或b c,而不是a b或c,示例直观展示优先级问题。 - 环视的零宽特性:lookaround 不消耗字符,写错断言会导致匹配位置偏移或重复匹配。
适合谁在什么情况下用
- 刚学正则、习惯“复制粘贴再改”的人:书里选的都是常见 gotcha 用例,能先建立正确直觉。
- 需要写表单校验、日志提取、简单文本替换的开发者:基础章节覆盖字符类、转义、分组、重复、标志、锚点,够应付日常。
- 想系统过一遍而非零散查资料的人:目录按 Introduction→Basics→…→Lookaround→Advanced Examples 递进,可当短课通读。
注意边界 作者明确说面向初学者,不涉及引擎回溯、递归正则等进阶主题。如果你的问题是性能或复杂嵌套匹配,这本书不是首选;但作为避坑入门,它的示例密度和可视化风格比纯文字教程更省力。
书中的内容是否涉及正则表达式引擎回溯等高级概念?
不涉及。按 refrf.dev 页面上的说明,这本《Regular Expressions for Regular Folk》定位是正则表达式入门读物,明确“不涉及引擎回溯、递归正则等高级正则概念”——至少目前没有。
它实际覆盖的内容是:介绍、基础、字符类、字符转义、转义、分组、重复、选择、标志、锚点、环视、进阶示例和后续学习方向。也就是说,环视属于它讲的范围,但回溯、递归这类偏引擎实现和高级写法的主题不在其中。
适合谁:有基本编程经验、刚开始学正则的人。作者也说明内容以可视化和示例为主,并特意挑选能暴露常见坑的测试用例。
如果你的目标是理解回溯机制、写递归正则或优化复杂表达式的性能,这本书不是对应资料;需要另找专门讲正则引擎原理的内容。想先打好基础、看懂日常匹配和环视写法,可以从它的“Basics”一路读到“Lookaround”。
用户评价(0)