技术-正则表达式 处理读书器的章、节、回问题

原创解决办法一:

Pattern pattern = Pattern.compile("第(.|..)章");//这里填写的是正则表达式,主要用来分第X章

Matcher matcher = null;

matcher = pattern.matcher(searchStr);

if (matcher.find()) {

section = matcher.group();//得到返回的章

}


转载解决办法二:来自http://tieba.baidu.com/p/2256063139 百度贴吧:【伪技术】使用正则表达式在txt小说的章节名称前加##

主要是在百度文库《calibre电子书制作教程》中得到的启发,并参照爱尔兰之狐Txt2ebook中的正则表达式加以修改。正文见2楼。
至于为何要在章节名称前加##,以及如何制作带目录的mobi电子书请参照贴吧精品:
http://tieba.baidu.com/p/2172085169

需要使用到的软件:
1、排版软件:排版助手(GIDOT TYPESETTER) ,功能强大的排版软件
2、文本编辑器,emeditor (其实就是记事本的威力加强版,支持正则表达式)


在网上找一本小说,最好本身是精校的。这里以我下载的一本白鹿原为例。
用emeditor打开小说,可以发现段落之间有空行,首行缩进也不统一。

这里就要用到排版助手了,将小说导入排版助手,点击“执行”,再保存。可以发现,文章的排版已经变化,首行缩进是两个全角空格,段落之间也没空行了。(注:排版助手这个软件博大精深,值得大家研究)


再用emeditor打开排版后的txt,我们开始为每一章标题前加#或者##。
在emeditor当中按CTRL+H


在“查找”栏填入正则表达式:
\s\s第.+[章节回][\s\n]
这是正则表达式的语法,\s表示空格, \s\s表示两个空格,\n表示换行,所以\s\s第.+[章节回][\s\n]表示只要以两个空格开始的第(*)章后面跟空格或者换行的任意文字串在替换栏中输入##\0, ##是h2的表示, \0表示寻找到符合正则表达式的字符串。
点击“替换全部”,所有章节名前面都加入了##标记。

全部替换之后,可以发现章节前面全部加上了##,共替换了34个字符串,经检查本书也确实是34章。
替换之后,另存文本为UTF-8格式,然后就可以用calibre处理了:



我个人总结了两种正则表达式,应该可以适合大部分的网络书籍。
1、第 章/节/回
如第一章、第二节、第3回等等这类的,
使用表达式:\s\s第.+[章节回][\s\n]
2、直接是中文数字或者阿拉伯数字
如一、二十二、1、33这类的,
使用表达式:\s\s(零|一|二|三|四|五|六|七|八|九|十|百|千|[0-9])+[\s\n]+ 

注:必须要经过排版助手处理后才能用,因为\s\s指的是章节前的两个全角空格,而且最好用emeditor编辑,因为不同编辑软件使用的正则表达式语法可能有所不同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值