小班教学之正则表达式教程_派派后花园

用户中心 游戏论坛 社区服务
发帖 回复
阅读:4857 回复:34

[排版修正] 小班教学之正则表达式教程

刷新数据 楼层直达
海笑0126

ZxID:49579737


等级: 派派版主
举报 只看楼主 使用道具 楼主   发表于: 2024-04-10 0
闲着无聊,整个教程。属于幼儿园小班程度,不定期修改
主楼是网上搬运教程,回帖楼层目录是自己写的,

目录的正则可用提供的两个网站测试。当然教程附件也提供工具

https://hiregex.com/
https://deerchao.cn/tools/wegester/
目录(按楼层来):
1.浅谈正则表达式在文本处理中的应用
2.去除章节标题间的数字的正则(如第47章47第五个,去掉中间的47)
3.赘余的搜查正则
4.查中文间的-,替换为圆点(替换外国人名,不误伤其他)
5.跨行英文引号的处理
6.章节名跨行合并(比如第一章
                                     心灵术士 改成第一章 心灵术士)
7.章节序号重排 (比如第1章 第3章 第4章这种批量自动改成第1章 第2章 第3章)
8.纯中文标题前面加章节名(比如图书射手6变成第1章 图书射手6)
9.咬文嚼字
10.查找不同序号名但相同章节的标题(比如第一章 唧唧哇哇
                                                                  第二章 唧唧哇哇)
11.专门删掉章节末尾的独立成段省略号
12.【”,】【”。】统一为【。”】
13.批量去除章节名前的1. 2.(比如1.第1章 )
14.章节名和正文混一行的处理
15.
16.没有第X章而又有重复两行的章节标题
17.
18.
19.
20.无
21.无
22.
23.
24.
25.
26.
27.两个空白行删一行或者三个空白行删一行
28.复制派派的评分记录
29.删除两个中文中间的点号
30.——所以改成——
                           所以















[ 此帖被海笑0126在2024-10-30 04:12重新编辑 ]
本帖最近评分记录: 1 条评分 派派币 +1
  • renol

    派派币 +1 2024-05-05

    [手动抠鼻]你是不是太高看幼儿园了!

海笑0126

ZxID:49579737


等级: 派派版主
举报 只看该作者 沙发   发表于: 2024-04-10 0

1.浅谈正则表达式在文本处理中的应用(转载追梦的风筝,已获取授权)

不得不在正式处理书签文件和文本之前加上一章正则表达式的概念。因为我的目的是授人以渔而不是授人以鱼。
只有掌握了正则表达式,以下的方法才会简单,否则只会感觉越来越繁琐混乱。

正则表达式是计算机语言里的一个重要组成部分,可以直译为“高级搜索替换功能”,给人比较直观的印象是“匹配”“模糊”“批量”。
因为我们常规的搜索、批量和替换都是准确对应某一个字词句的,而使用正则则可以匹配某一类的符合要求的所有。
大家当然无需掌握所有正则表达式知识,我在这里给大家精简一下好了,掌握我以下所说内容,那么对于文本整理就足够了。

1.逻辑与(字符范围内):[]
就是中括号内任意字符都可查找,比如正则查找[阡陌居],那就是三个字中任意一个字都可以搜索到。

2.逻辑或:|
顾名思义,比如正则查找 阡陌|河洛|文心 ,就是三组字词中任意一组都可以搜索到。会找到阡陌、河洛和文心这三个词。

3.逻辑非(字符范围外):[^]
和第一个正好相反,就是除了中括号内的字符才可查找,比如[^阡陌居],是指这三个字以外的任意字符。

4.回车换行符:\r\n (其中\n是换行符,\r是回车符)
这个在实际应用中通常组合出现,建议大家也一起用,具体原因我也不解释了。
(通常我们用的各种工具的排版功能都是本条正则灵活使用的结果:
比如去除所有空行就是反复正则替换\r\n\r\n为\r\n;行间加一空行则是\r\n替换为\r\n\r\n;行首加两全角空格是\r\n替换为\r\n  等。)

5.任意字符:.
顾名思义,可以匹配任意内容,包括空字符。

6.匹配开始:^
即正则表达式匹配语句的开始。

7.匹配结束:$
即正则表达式匹配语句的结束。

8.重复至少零次:*
显然了,.*连用就是任意字符重复任意次数,即可引申表达任意内容,另注.*不要和\r\n一起使用。

9.重复至少一次:+
.+和.*的意义是一样的,不过.+可以和\r\n一起使用。

10.重复零次或一次:?

11.标记表达式语句:( )
正则表达式中标上括号本身是不会影响语句功能的,加括号为的是替换功能。从左至右,正则搜索语句中的第一个括号所引用语句为语句1,第二个为语句2,以此类推。

12.所有查找内容:\0
这个指代搜索项里面所有内容。

13.标记表达式:\1 \2 \3 ……
这个配合第11条,第一个括号对应\1,第二个对应\2以此类推。

14.数字:\d
就是匹配0-9所有数字了,显然\d+就是匹配任意长度字符串了,不过个人习惯用[0-9]+代替,因为操作和变形更灵活。比如[0-9a-z]+就是任意字母数字串。

15.重复:{ }
{n}指重复n次,比如[a-zA-Z]{3}指任意三个字母连用的串;
{n,}指重复至少n次,比如[0-9]{4,}可以指任意大于等于一千的数,当然,如果你写上0123也能匹配上;
{n,m}指重复次数大于等于n,小于等于m。

16.转义:\
以上所提语句都有各自的特殊符号表示含义,那么我们如果只是想要查找他们的本身而不是其所代表的含义呢?
很简单,在该符号前面加\即可。比如正则直接搜索*会报错,搜索\*就可以了。以上几条其实已经把\的功能表示出来了,比如\d,\r,\n等已经不代表字母的本身了,实际上还有很多字母加\也会有别的含义,比如\t代表制表符,这里就不做介绍,因为做书一般用不到。

17.汉字的正则表达式:
这个比较常用。用两种形式皆可:[\x{4e00}-\x{9fa5}]或[\u4e00-\u9fa5]。

以上说了很多,相信大家已经有了一个直观的认识,另外切记,正则是搜索项而不是替换项,替换项只能是常规内容或是第13条那样的,正则符号如果写在替换项,那么符号本身是什么,就会被替换成什么。

活用正则可以节省很多时间,并收获到意想不到的效果。

比如某本书的章节目录是这样的:第十三卷 阡陌居 第894章 风筝出品
那么就可以这样匹配:第[一二三四五六七八九十零百千]+卷 .* 第[0-9]+章 .*
[ 此帖被海笑0126在2026-01-29 10:31重新编辑 ]
本帖最近评分记录: 1 条评分 派派币 +1
  • renol

    派派币 +1 2024-05-05

    学习了,之前只用4的\r\n来着。

海笑0126

ZxID:49579737


等级: 派派版主
举报 只看该作者 板凳   发表于: 2024-04-10 0
本部分内容设定了加密,查看此帖需要威望:4478
[ 此帖被海笑0126在2024-04-28 00:46重新编辑 ]
海笑0126

ZxID:49579737


等级: 派派版主
举报 只看该作者 地板   发表于: 2024-04-10 0
本部分内容设定了加密,查看此帖需要威望:4478

[ 此帖被海笑0126在2024-04-28 01:11重新编辑 ]
海笑0126

ZxID:49579737


等级: 派派版主
举报 只看该作者 4楼  发表于: 2024-04-10 0
本部分内容设定了加密,查看此帖需要威望:4478

[ 此帖被海笑0126在2024-04-28 01:43重新编辑 ]
海笑0126

ZxID:49579737


等级: 派派版主
举报 只看该作者 5楼  发表于: 2024-04-10 0
本部分内容设定了加密,查看此帖需要派派币:4478
[ 此帖被海笑0126在2024-06-02 15:21重新编辑 ]
海笑0126

ZxID:49579737


等级: 派派版主
举报 只看该作者 6楼  发表于: 2024-04-10 0
本部分内容设定了加密,查看此帖需要威望:6000
[ 此帖被海笑0126在2024-08-13 14:45重新编辑 ]
海笑0126

ZxID:49579737


等级: 派派版主
举报 只看该作者 7楼  发表于: 2024-04-10 0
本部分内容设定了加密,查看此帖需要威望:6000
[ 此帖被海笑0126在2024-08-13 14:06重新编辑 ]
海笑0126

ZxID:49579737


等级: 派派版主
举报 只看该作者 8楼  发表于: 2024-04-10 0
本部分内容设定了加密,查看此帖需要威望:6000


[ 此帖被海笑0126在2024-08-14 02:48重新编辑 ]
附件: 标题缺失第X章处理程序demo.rar[点击下载](493 K) ,该附件已加密,拥有65535威望才能下载
海笑0126

ZxID:49579737


等级: 派派版主
举报 只看该作者 9楼  发表于: 2024-04-10 0
本部分内容设定了加密,查看此帖需要威望:6000






[ 此帖被海笑0126在2024-08-14 02:14重新编辑 ]
海笑0126

ZxID:49579737


等级: 派派版主
举报 只看该作者 10楼  发表于: 2024-04-10 0
本部分内容设定了加密,查看此帖需要威望:6000

[ 此帖被海笑0126在2024-10-30 03:02重新编辑 ]
海笑0126

ZxID:49579737


等级: 派派版主
举报 只看该作者 11楼  发表于: 2024-04-10 0
本部分内容设定了加密,查看此帖需要威望:6000


[ 此帖被海笑0126在2024-10-30 03:22重新编辑 ]
海笑0126

ZxID:49579737


等级: 派派版主
举报 只看该作者 12楼  发表于: 2024-04-10 0
本部分内容设定了加密,查看此帖需要威望:7000

[ 此帖被海笑0126在2024-10-30 03:23重新编辑 ]
海笑0126

ZxID:49579737


等级: 派派版主
举报 只看该作者 13楼  发表于: 2024-04-10 0
本部分内容设定了加密,查看此帖需要威望:7000



[ 此帖被海笑0126在2024-10-30 03:53重新编辑 ]
海笑0126

ZxID:49579737


等级: 派派版主
举报 只看该作者 14楼  发表于: 2024-04-10 0
本部分内容设定了加密,查看此帖需要威望:7000
[ 此帖被海笑0126在2024-10-30 03:29重新编辑 ]
海笑0126

ZxID:49579737


等级: 派派版主
举报 只看该作者 15楼  发表于: 2024-04-10 0
15占楼
这种样子的章节标题批量改动
主要是里面有不少断首就出现的年月份句子
没法套用txtformat内置那个正则

如果每个小节序号后面都有小数点“.”,而句首年月份不带小数点的话,还是可以在EE里处理的

首先保证所有行的行首都是两个全角空格,然后查找【\n  ([0-9]+)\.】,替换为【\n\n\n正文 第\1章 】
[ 此帖被海笑0126在2024-08-14 15:06重新编辑 ]
海笑0126

ZxID:49579737


等级: 派派版主
举报 只看该作者 16楼  发表于: 2024-04-10 0
本部分内容设定了加密,查看此帖需要威望:6000
[ 此帖被海笑0126在2024-10-30 03:00重新编辑 ]
海笑0126

ZxID:49579737


等级: 派派版主
举报 只看该作者 17楼  发表于: 2024-04-10 0
17.
\n  ([0-9]+)\.
第$1章
最近在搞《法兰西不缺皇帝》
如图,段末的“有分教”之后的定场诗,怎么正则为下图所示的排版
在EE里做:查找【\n  有分教:([^。]{1,})。([^。]{1,})。\n】,替换为【\n  有分教:\n  「\1。\n  \2。」\n】
识别到句号后换行;若是多句就多写几个 【([^。]{1,})。】

你的文本里有些是着这样的,定场诗是在“有分教”的下一行,刚刚那个正则就要改一下才行
[ 此帖被海笑0126在2024-08-14 15:06重新编辑 ]
海笑0126

ZxID:49579737


等级: 派派版主
举报 只看该作者 18楼  发表于: 2024-04-10 0
18占楼
把文本的 引号 换到上一行:后面的 正则
没有空格、空行的话,EE里可查【:\n“】,替换成【:“】,就是去掉冒号后的换行
[ 此帖被海笑0126在2024-08-14 15:06重新编辑 ]
海笑0126

ZxID:49579737


等级: 派派版主
举报 只看该作者 19楼  发表于: 2024-04-10 0
19占
去除这些段落末尾的数字
试试在EE里查【([”。…!?—)])[0-9]+\n】,替换成【\1\n】;做完之后,可以查【[0-9]+\n】验证一下
[ 此帖被海笑0126在2024-08-14 15:05重新编辑 ]
发帖 回复