关于我那误打误撞学会的正则

789天前 · 代码 · 1282次阅读

是这样的

一个朋友喜欢看书,尤其是轻小说。以前在轻文轻小说看妹系的国轻。可惜..

iqing

但是有一本之前在轻文的妹系小说他久久无法忘怀,于是历经千辛万苦终于找到了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]+[)]
👍 5

正则 轻小说

最后修改于261天前

评论

贴吧 狗头 原神 小黄脸
收起

贴吧

狗头

原神

小黄脸

  1. 冯小贤 756天前

    一招(.*?)走天下

    1. 季悠然 756天前

      妙啊

  2. 米石文创 768天前

    我是误打误撞学会了设计,成了网页设计,成了UI设计,又成了产品设计。。。。

    1. 季悠然 766天前

      误打误撞一条龙hhh

  3. 今日新鲜事 771天前

    文章不错非常喜欢

  4. Yue 773天前

    不愧是被誉为“火星文”的正则

  5. ⑨BIE 776天前

    正则一时爽,修改火葬场

  6. chz 776天前

    两个课间是什么鬼。。

    1. 季悠然 775天前

      字面意思

      1. chz 775天前

        敢问您老芳龄?

        1. 季悠然 774天前

          好问题,我的前两篇文章你应该能推出来吧

          1. chz
            chz 771天前

            推出来了,所以我觉得当头一棒不够,可能要两棒。嗯,两棒也不一定够啊,三棒吧。

  7. 佛系派 777天前

    果然厉害啊

  8. 乐心湖 779天前

    正则用一次搜一次。

  9. SomeBottle 779天前

    正则真的是边搜边用了,不停地改,直至能用为止

  10. Veen Zhao 779天前

    无中生有

  11. kindleer 780天前

    正则表达式还是很有用的

  12. 油油 781天前

    正则在手,天下我有

    1. 季悠然 781天前

      嘿嘿

  13. Given 782天前

    TXT分享下?

    1. 季悠然 782天前

      https://zakuro.ink
      你值得拥有

  14. KicoModo 783天前

    无中生友?

  15. 夜杏 784天前

    自说自话域名更换成rua.ink辣

    1. 季悠然 783天前

      换好辣

  16. Given 784天前

    说,你这个朋友到底是不是你自己

  17. 南楼月下 786天前

    你口中的这个朋友该不会 就是你吧

    1. 季悠然 785天前

      https://zakuro.ink
      破案了

      1. TheSky 785天前

        你朋友是啥主题? 安利一下 ,真好看鸭

        1. TheSky 785天前

          好像不是Typecho

          1. 季悠然
            季悠然 785天前

            这就一单页html加上我的删删改改

  18. 幻焕 787天前

    我决定不学了

  19. Nroy 788天前

    正则还是很简单的,弄清楚元字符,限定符,分组和向后引用,优先级,定位符就好啦

    1. 季悠然 788天前

      心理层面的恐惧大于技术层面

  20. Given 789天前

    正则啊。。也不难,stack overflow能解决

    1. 季悠然 789天前

      上个Stack Overflow还得出趟国,不去

      1. mzrme 787天前

        Stack Overflow可以上啊,或许是v6可以

      2. Given 788天前

        明明国内能用,就是有几个JS不加载而已

  21. 格子老师 789天前

    最后的截图中还是缺少第28章

    1. 季悠然 789天前

      我这个TXT缺斤少两

  22. Eltrac 789天前

    我正则现在都不会,要用到的时候都是边搜索边写的 2333

    1. 季悠然 789天前

      可能是我没有掌握搜索引擎的真谛

  23. c0sMx 789天前

    无中生友

    1. 季悠然 789天前

      别这样

  24. 无用挂件 789天前

    “我有一个朋友”

    1. 季悠然 789天前

目录

avatar

季悠然

寻找有趣的灵魂

127

文章数

1954

评论数

3

分类

好热啊

arknights!

钟表走着同样的节拍,夜晚缀着同一簇星星。

加西亚·洛尔迦

107