是这样的
我一个朋友喜欢看书,尤其是轻小说。以前在轻文轻小说看妹系的国轻。可惜..
但是有一本之前在轻文的妹系小说他久久无法忘怀,于是历经千辛万苦终于找到了TXT文件。我那个朋友十分注重阅读体验,所以用上了「厚墨」这款阅读器。这本是件好事,因为厚墨确实非常舒服。但是呢,厚墨导入小说的时候要使用正则表达式匹配小说标题。
虽然厚墨自带了一个正则匹配表达式,但是完全没起作用。我朋友作为一个完美主义者,完全接受不了这种奇奇怪怪的目录。所以他便找上了我。
我也是厚墨的用户之一,以前看的书一般用厚墨自带的也可以完美使用了,这到底是何方神圣。怀着这样的心情我打开了小说TXT。第一章第一节的标题是
vol.① 妹妹变得奇怪这件事情绝对没办法接受 chapter 1 这和我的妹妹不一样
这明显完全超出了厚墨自带正则的接受范围,没办法只能自己动手了。不对,我明明也不会啊
没办法只能硬着头皮边学边搞了。
开始
中午睡前在表哥那里学了半个钟,我的眼睛告诉我我学会了。下午赶紧找个课间试试手。
分析
第一步先分析一下这种标题的组成,看了一下前几章的标题
vol.① 妹妹变得奇怪这件事情绝对没办法接受 chapter 1 这和我的妹妹不一样
vol.① 妹妹变得奇怪这件事情绝对没办法接受 chapter 2 这个展开和我想的不一样
vol.① 妹妹变得奇怪这件事情绝对没办法接受 chapter 3 这件事情比我想象的要复杂
vol.① 妹妹变得奇怪这件事情绝对没办法接受 chapter 4 这就是我的妹妹吧
大概是vol.
+符号序号(①)
+卷名
+chapter
+章节序号(1,2,3...)
+标题
,然后从符号序号开始每个成分之间还要加个空格。了解了组成之后就可以动手了。第一稿,启动!
编写
vol.[①②③④⑤⑥⑦⑧⑨⑩]\s[\u4e00-\u9fa5]+\schapter\s[0-9]+\s[\u4e00-\u9fa5]+
解析一下:
vol.是写死的,不用改所以直接写上去了。然后是卷的符号序号,用一个集合[]
把所有可能包起来。空格则是用\s
来匹配。接下来是一段章节名,直接上中文匹配[\u4e00-\u9fa5]
,因为文章标题不可能只有一个字,所以加上个+
表示一个或多个。之后的就按部就班地写就完事了。
试试看。
...
vol.① 妹妹变得奇怪这件事情绝对没办法接受 chapter 34 这个任务果然是失败了
vol.① 妹妹变得奇怪这件事情绝对没办法接受 chapter 35 这个礼物算是最后的方法吧
vol.④ 逐渐重叠的麻烦和心意 chapter 1 林静这是闹哪样
vol.④ 逐渐重叠的麻烦和心意 chapter 2 证明自己是个妹控
vol.④ 逐渐重叠的麻烦和心意 chapter 3 姐妹
...
vol.④ 逐渐重叠的麻烦和心意 chapter 47 被耍了
vol.④ 逐渐重叠的麻烦和心意 chapter 48 想要保护她的心意
vol.⑥ 将恐惧击碎的勇气来自羁绊 chapter 2 第一日
vol.⑥ 将恐惧击碎的勇气来自羁绊 chapter 3 第一日
...
vol.⑥ 将恐惧击碎的勇气来自羁绊 chapter 74 决断
vol.⑥ 将恐惧击碎的勇气来自羁绊 chapter 75 决断
前面都还好,不过第二三五七八卷跑到哪里去了??书本身是有到vol.⑧的,莫非中间出了什么猫腻?先看看第二第三卷啥情况。再次打开TXT文档找到出问题的章节。
vol.② 日常的转折点:TG! chapter 1 关于我有点健忘这件事……
vol.③ TG带来的乱七八糟的生活 chapter 2 新的开始和新的麻烦
vol.⑤已经无法抑制的心跳 chapter 1 海边的别墅
vol.⑦ 新生活,新动乱 chapter 1 渐回正轨的日常?【1】
vol.⑧:珍贵必用真心 chapter 2 国王游戏[2]
WTF!?卷名中间出现了中文标点和英文。第五卷中序号和卷名之间没有空格,第八卷则是用“:”代替了那个空格。
只能动手修改了。
符号序号和卷名中间有可能出现的是
- 空格
- “:”
- 啥都没有
而且只会出现一个。那么就用*
来解决吧。*
在正则里表示出现0个及以上。这里这段正则就可以写成
[\s]*[:]*
然后是卷名中间的英文和符号问题。
会出现的情况有三种:
- 中文+
:
+英文+!
- 英文+中文
- 中文+
,
+中文
因为学术不精,那只能就使用笨方法了。
[A-Z]*[\u4e00-\u9fa5]+[,]*[:]*[A-Z]*[!]*[\u4e00-\u9fa5]*
那么第二稿表达式就是
vol.[①②③④⑤⑥⑦⑧⑨⑩][\s]*[:]*[A-Z]*[\u4e00-\u9fa5]+[,]*[:]*[A-Z]*[!]*[\u4e00-\u9fa5]*\schapter\s[0-9]+\s[\u4e00-\u9fa5]+
再试试。NICE,一个不漏!然而问题还没结束。
vol.⑦ 新生活,新动乱 chapter 35 自己的想法
vol.⑦ 新生活,新动乱 chapter 36 自己的想法
vol.⑦ 新生活,新动乱 chapter 38 自己的想法
为什么会出现重复的??(37不见了是小说TXT本身就没有)马上赶到出事地点。
vol.⑦ 新生活,新动乱 chapter 38 自己的想法【4】
啊,这也是常见的标题起法呢。所以只用在后面再加上
[【]*[0-9]*[】]*
那么最终表达式就是:
vol.[①②③④⑤⑥⑦⑧⑨⑩][\s]*[:]*[A-Z]*[\u4e00-\u9fa5]+[,]*[:]*[A-Z]*[!]*[\u4e00-\u9fa5]*\schapter\s[0-9]+\s[\u4e00-\u9fa5]+[【]*[0-9]*[】]*
完美!
写在后面
这次一共耗时两个课间加午睡前半个小时,但是感觉收益颇丰。就是下午放学后累瘫了。一个下午都没有休息一下有点缓不过来。也算是次不错的体验吧。
我感觉我正则已经入门了!
其他备份
《我的妹妹怎么可能是问题少女》
[第]+[一,二,四]+[,]*[三]*[卷]*[:]+[!]*[\u4e00-\u9fa5]*[,]*[\u4e00-\u9fa5]*[_]*[章]*[ch]*[a]*[s]*[pter]*[:]*[1234567890]*[ ]*[\u4e00-\u9fa5]*[…]*[!]*[:]*[ch]*[a]*[s]*[pter]*[1234567890]*[ ]*[:]*[ ]*[.]*[1234567890]*[,]*[ ]*[「,(]*[\u4e00-\u9fa5]*[」,)]*[。]*[…]*[!]*[「,(]*[\u4e00-\u9fa5]*[」,)]*[!]*
凝望彩虹的双眼
[番外]*第[一,二,三,四,五,六,七,八,九,十]+章[(上)]*[(下)]*:[\u4e00-\u9fa5]+[!]*[?]*[。]*[(][0-9]+[)]
对这几本轻小说很感兴趣,但评论里的链接失效了,希望博主能再发一次,在此致以谢意。
这里哈
https://youranreus.lanzouo.com/b0f24ze7i 密码:1j4j
太感谢了,这些轻文的遗产能保存下来真是太好了。
一招(.*?)走天下
妙啊
我是误打误撞学会了设计,成了网页设计,成了UI设计,又成了产品设计。。。。
误打误撞一条龙hhh
文章不错非常喜欢
不愧是被誉为“火星文”的正则
正则一时爽,修改火葬场
两个课间是什么鬼。。
字面意思
敢问您老芳龄?
好问题,我的前两篇文章你应该能推出来吧
推出来了,所以我觉得当头一棒不够,可能要两棒。嗯,两棒也不一定够啊,三棒吧。
果然厉害啊
正则用一次搜一次。
正则真的是边搜边用了,不停地改,直至能用为止
无中生有
正则表达式还是很有用的
正则在手,天下我有
嘿嘿
TXT分享下?
https://zakuro.ink
你值得拥有
无中生友?
自说自话域名更换成rua.ink辣
换好辣
说,你这个朋友到底是不是你自己
你口中的这个朋友该不会 就是你吧 !
https://zakuro.ink
破案了
你朋友是啥主题? 安利一下 ,真好看鸭
好像不是Typecho
这就一单页html加上我的删删改改
我决定不学了
正则还是很简单的,弄清楚元字符,限定符,分组和向后引用,优先级,定位符就好啦
心理层面的恐惧大于技术层面
正则啊。。也不难,stack overflow能解决
上个Stack Overflow还得出趟国,不去
Stack Overflow可以上啊,或许是v6可以
明明国内能用,就是有几个JS不加载而已
最后的截图中还是缺少第28章
我这个TXT缺斤少两
我正则现在都不会,要用到的时候都是边搜索边写的 2333
可能是我没有掌握搜索引擎的真谛
无中生友
别这样
“我有一个朋友”