如何用正则表达式移除单词内部的连字符'-'?
解决Calibre转换EPUB时跨页断词连字符的问题
我太懂这种烦躁了——Calibre转PDF到EPUB的效果确实惊艳,但那些跨页断开的单词中间插着的'-',真的太破坏阅读流畅感了。你已经找对了核心方向,接下来只要用正则捕获组就能精准保留前后字母、只删掉碍事的连字符。
具体实现方案
1. 精准匹配的正则表达式
你之前用的[A-z]-[A-z]有个小坑:[A-z]的范围会包含[、]这类非字母符号,换成更精准的匹配更稳妥:
- 针对英文单词:
([A-Za-z])-([A-Za-z]) - 如果需要支持带重音的多语言单词:
(\p{L})-(\p{L})(\p{L}匹配任意Unicode字母)
2. 替换规则(核心!)
我们的目标是保留连字符前后的字母,只移除中间的'-',所以用捕获组反向引用:
在Calibre的工具里,直接把替换内容设为$1$2——意思是把第一个捕获到的字母($1)和第二个捕获到的字母($2)拼接起来,跳过中间的'-'。
3. Calibre里的实操步骤
打开转换好的EPUB,进入Calibre内置编辑器:
- 按
Ctrl+H(Mac按Cmd+H)调出「查找替换」面板 - 勾选「使用正则表达式」选项
- 「查找」框输入:
([A-Za-z])-([A-Za-z]) - 「替换为」框输入:
$1$2 - 先点「查找下一个」确认匹配的都是跨页断词的连字符,再点「全部替换」就大功告成
效果示例
原本的断词:
exam-ple
cal-bre
soft-ware
替换后直接变成:
example
calbre
software
这个方案只会处理单词内部的连字符,不会误删复合词(比如mother-in-law)里的功能性连字符——当然如果你的PDF里复合词本来就有跨页断词的情况,可能需要更复杂的规则,但绝大多数场景下这个方法足够好用。
内容的提问来源于stack exchange,提问作者Chicko
相关产品推荐
相关产品推荐

