把网文 TXT 转成 EPUB 时,章节目录的好坏直接决定阅读体验——目录正确就能在 Kindle / Boox 上跳章,目录错乱就只能从头滑到尾。
而章节识别是这类工具最容易翻车的地方。本工具默认正则已经覆盖了网文最常见的 90% 写法,但仍有几类情况会失败。这篇按”哪些会成功 / 哪些会失败 / 失败了怎么修”三段讲清楚。
默认正则覆盖了什么
打开 UI 的”章节匹配正则”框,里面是一长串。拆开看实际覆盖的是 4 大类:
| 类别 | 模式 | 举例 |
|---|---|---|
| 数字章节 | 第X章/回/节/集 | 第一章、第 123 回、第三十五节 |
| 特殊章节 | 序章/序言/楔子/引子/前言/后记/尾声/番外 | 楔子、序章·初见、番外·后日谈 |
| 英文章节 | Chapter/CHAPTER X | Chapter 5、Chapter XII |
| 卷篇层级 | 第X卷/篇/部、卷X、Volume/Book/Part X | 第一卷、卷三、Volume 1 |
数字格式同时支持:
- 阿拉伯数字:
第 1 章、第 234 章 - 汉字数字:
第一章、第一百二十三章(字符集零一二三四五六七八九十百千万两) - 罗马数字:仅在 Chapter/CHAPTER 后生效(
Chapter XII、Chapter IX)
特殊章节后面允许接副标题(30-50 字),所以”楔子·风起于青萍之末”、“番外·林家姐妹的童年”都能识别。
卷与章是两层:
- 工具同时跑两套正则——章节正则 + 卷篇正则
- 匹配到卷时在目录里新建一层,后续章节挂在该卷下
- 同一行既匹配卷又匹配章时卷优先——避免”第一章·序章”这类歧义
哪些情况会失败
按出现频率排,5 种典型坏样本:
1. 标题被装饰符号包裹
※※※ 第一章 风起 ※※※
【第一章】风起
═══ 第一章 风起 ═══
默认正则要求 ^[\s ]*第X章...[\s ]*$——只允许前后空格,不允许其它字符。修复:把正则改成允许装饰符:
^[\s ※【═]*第[零一二三四五六七八九十百千万两\d]+[章回节集].{0,50}[\s ※】═]*$
2. 命名超出默认范围
上篇 离别
下篇 重逢
卷之一 山雨欲来
序 ← 单字"序"成行
楔 子 ← 中间有空格
上篇/下篇/序(单字)默认没覆盖。修复:把对应模式加进正则。注意 楔[\s ]*子 在默认正则里已经允许中间有空格——这种坑工具已经处理。
3. 章节行带尾部噪声
第一章 风起 点击查看更多
第一章·风起 [VIP]
第一章 风起 (字数 4500)
后面 30-50 字的”副标题宽容度”会把”点击查看更多”也当成副标题接受——所以仍能识别,但章节标题里会带尾巴。修复:把噪声前的正常副标题部分留作章节标题,需要”裁尾”时改”广告/水印过滤”——丢掉这一类整行不行(章节会消失),只能在转完后用 Calibre 批量改标题。
4. 标题行超过 80 字
第一章 这是一个非常非常长的副标题描述了主角今天发生的所有事情包括起床吃早饭出门遇到一个白衣女孩...
默认行长上限 80 字——超出视为对话框 / 正文而非章节标题。这是为了避免把”她说:‘第一章我爱你‘“这种引号里的字误识别。修复:仅在确认这类长标题确实是章节时调整源数据——比如把超长副标题手动截短。
5. 章节正则全部失效
完全识别不出(章节数 = 1)时工具退化为”整本一章”,不会报错也不会丢内容。这种情况的修复路径见后面”修复实战”。
笔趣阁广告与”本章完”
网文 TXT 几乎都带着源站点的广告。工具默认”广告/水印过滤”覆盖:
| 类别 | 模式 | 举例 |
|---|---|---|
| URL | ^https?:// / ^www\. | https://www.biquge.com |
| 章末标记 | 本章完 / 未完待续 / 完结撒花 等 | 本章完 |
| 站点标记 | 笔趣阁 / 起点 / 17K / po18 / 思路客 等 13 个 | 笔趣阁 www.biquge.com |
| 推广话术 | 请记住本站 / 手机版阅读 等 7 类 | 请记住本站永久网址 |
| 分隔符 | ─━—-_=* 连续 ≥ 5 次 | ═══════════ |
没覆盖的:作者打赏语、QQ 群、微信公众号、章末感言。这些个性化字符串得自己加:
^[\s ]*感谢XX的打赏[\s ]*$
^[\s ]*作者QQ群\s*[::]?\s*\d+[\s ]*$
^[\s ]*关注公众号.{0,30}$
注意陷阱:不要写 ^\s*$ 来”去空行”——空行是段落分隔符,去掉后整本书会糊成一坨。
正文前目录页的处理
很多 TXT 在卷首有”目录预览”段:
第一章 风起
第二章 山雨
第三章 暗涌
...(连续几十行)
第一章 风起
(正文内容...)
照搬转 EPUB,目录里会出现两套章节——一套是真章节、一套是目录页里的”假章节”。
工具的 skipFrontTOC 启发式:
- 触发条件:连续 ≥ 5 个章节匹配 + 中间每节正文 < 50 字
- 行为:整段判定为目录页丢弃
- 提示:UI 顶部会显示”已丢弃 N 章作为正文前目录”——可对账核验
误删的情况:作者写极短章节的微小说(每章几十字)会被误判。预览里发现章节数不对时,关掉 skipFrontTOC 重转。
EPUB 目录与识别结果
识别到的章节会双向写入 EPUB 目录:
toc.ncx—— EPUB 2 目录(老阅读器走这里)nav.xhtml—— EPUB 3 目录(新阅读器走这里)
有卷层级时两份目录都生成两层结构。没有卷只有章时,目录是单层(不会硬塞个”无卷”父节点)。完全识别不出(单章兜底)时,目录只有一项指向整本。
有卷有章:
第一卷 风起篇
├─ 第一章 ...
└─ 第二章 ...
第二卷 山雨篇
└─ 第三章 ...
只有章:
第一章 ...
第二章 ...
第三章 ...
兜底单章:
全书
修复实战:3 个典型坏样本
案例 1:默认转出来只有 1 章
症状:拖入 50 万字网文,预览显示”1 章 / 50 万字”。
排查:在 TXT 里搜 第一章,发现实际写法是 [第一章]——带方括号。
修复:把正则改成允许方括号:
^[\s \[【]*第[零一二三四五六七八九十百千万两\d]+[章回节集].{0,50}[\s \]】]*$
结果:预览刷新显示”312 章 / 50 万字”。
案例 2:转出来 6000 章
症状:100 万字小说预览显示”6000+ 章”——明显爆表。
排查:默认正则把”第×百零×章”识别没问题,问题在用户手动加的一条 ^.{0,50}$ 把短行全当成了章节。
修复:删掉那条过度宽松的正则,恢复默认。
结果:章节数回到 280。
案例 3:序章 + 番外 一个都没识别
症状:章节数正确,但”楔子”、“番外·后日谈”都被合并到了相邻章节里。
排查:原文里写法是 ———— 楔 子 ——————前后有装饰横线。默认正则覆盖了”楔子”中间有空格,但前后的横线超出了 ^[\s ]* 的范围。
修复:
^[\s ─━—\-]*楔[\s ]*子.{0,30}[\s ─━—\-]*$
或者更简单——把同样的装饰处理批量加到默认正则的每个分组前后。
调正则前先做的三件事
| 步骤 | 操作 | 目的 |
|---|---|---|
| 1 | 在原 TXT 搜一个确认是章节的字符串 | 看真实字符环境 |
| 2 | 比对默认正则 7 种命名 | 判断是覆盖问题还是装饰符问题 |
| 3 | 关掉 skipFrontTOC 重转看章数 | 排除”被当目录页误删”的可能 |
做完这三步再动正则,避免改一行漏一行。
工具默认不做的事
- 不修改正文文字——只识别章节边界,正文一字不改(简繁转换是另一项独立功能,默认关闭)
- 不批量改章节标题——识别到什么就用什么;想统一格式用 Calibre 或编辑器先处理 TXT
- 不识别行内章节标题——
...上一章结束。 第二章 开始...这种章节标题不在行首的,识别不到
如果原稿质量很差、章节命名不规则、夹杂大量噪声——先在编辑器里用查找替换粗清一遍再转,比纯靠正则便宜得多。最后转出来的 EPUB 在 Kindle、Boox、Apple Books 上的目录就能完整跳转,单手翻章不再翻烂屏。