ReedenReeden
阅读与排版/内容替换

正则替换示例

用常见示例理解正则替换,先小范围测试,再应用到整本书。

使用前提醒

正则替换适合处理“格式有规律,但文字不完全相同”的内容。

它也更容易误伤正文。第一次使用时,建议:

  1. 先限定到当前书籍或当前章节
  2. 先保留替换前后的对照
  3. 检查命中结果
  4. 确认无误后再扩大范围

删除固定广告行

如果广告行有固定开头,可以匹配整行:

^.*广告关键词.*$

替换为空即可隐藏这类行。

如果开启了多行匹配,要特别确认不会把广告行前后的正文一起吃掉。

删除固定网址

匹配常见网址:

https?://\S+

适合清理章节中反复出现的网址。替换为空后,建议检查标点和空格是否还自然。

合并多余空行

把连续多个空行压缩成一个空行:

\n{3,}

替换为:


不同系统的换行可能略有差异。如果没有命中,可以先尝试只处理当前章节。

拆分章节号和标题

把同一行里的章节号和标题分成两行,例如:

^(第[一二三四五六七八九十百千万\d]+章)\s*(.+)$

替换为:

$1
$2

这类规则适合标题格式稳定的书。如果标题格式变化很大,建议使用 TXT 分章规则 或自定义章节管理。

使用分组替换

正则里的括号会产生分组。替换内容里可以用 $1$2 引用匹配到的分组。

例如把“张三:一句话”改成“张三说:一句话”:

^([^::]+)[::](.+)$

替换为:

$1说:$2

如果结果不符合预期,先检查是否多匹配了冒号前后的正文。

什么时候不要用正则

这些情况不建议一上来就写正则:

  • 只改一个固定错字
  • 只想临时隐藏一个短句
  • 不确定正文里是否有相似句式
  • 规则会删除大段内容
  • 还没备份重要书籍

能用普通替换解决的问题,优先用普通替换。