最近在用SuperMemo渐进阅读旋元佑的《英语魔法师之语法俱乐部》这本语法书。我的阅读前流程是这样的:(括号内的是所用工具)
- 将epub电子书按章节分割(calibre-EpubSplit)
- 将需要阅读的章节导入SuperMemo(Quicker、pandoc、AutoHotkey)
- 在SuperMemo内将该章节分割成更小的卡片(鼠标右键-阅读-分割-分割文章)
- 统一将所得的所有卡片设为新材料(根卡片鼠标右键-处理选中分支-学习-忘记)
- 菜单栏-学习-阶段-新学材料(也可等当天复习完后根据提示进入)
问题在于,我所拥有的这本epub电子书,html标签很乱,导致我在导入SM后无法正确根据html标签分割文章,因此在导入SM前需要先整理epub文件的html标签。这也就是这篇文章的由来。
截取这本书的一个片段:
|
|
所要做的是把下面这一段变为:<h2>强调语气的副词(Intensifiers)</h2>
,这样我就可以在SM里很方便地按h2标签分割内容。
|
|
可以看到,一共是4个blockquote标签,3个span标签,那么我们可以先设法用正则匹配出一个起始blockquote标签,然后重复4次,匹配出一个起始span标签,然后重复3词,就能匹配出所有的起始标签了。
(<blockquote\s[^>]*">){4}(<span\s[^>]*">){3}
同样的道理,匹配所有的闭合标签。
(<\/span>){3}(</blockquote>){4}
最后,标题可以用(.*?)
匹配,把它们组合在一起,就成功匹配出了这段html代码。
(<blockquote\s[^>]*">){4}(<span\s[^>]*">){3}(.*?)(<\/span>){3}(</blockquote>){4}
将其用下面的内容替换,内容就整理好了。
\n<h2>$3</h2>\n
上面的正则,经过我的实践,是比较经济实惠的。以后如果有更好的方案,本文会继续更新。