目录
场景:
在一个小说TXT中,频繁的添加了
类似下面的信息
※版本出处:旧雨阁扫校※
上一页回目录下一页
lwj@cser 制作更多精彩E书请访问“wbzd”
2009年10月12日 星期一 2:43:17 PM《旧派武侠合集》lwj@cser制作 2009.8江湖奇侠传 - 第三十二回 惊变卦孝子急亲仇 污佛地淫徒受重创
目录
白莲英雄传
偷拳
荒江女侠
江湖怪异传
江湖奇侠传
近代侠义英雄传
沉剑飞龙记
蓝田女侠
鹰爪王
罗刹夫人
七杀碑
制作说明
使用说明
《江湖奇侠传》平江不肖生·著
需要匹配这些信息,然后批量替换掉。
以 空格 ※版本出处为开头,以·著 为结束
用到的正则规则
1)空格
\s
2) 若干个空格
\s* (可以是0个)
\s+ (至少1个空格)
3)^以字符串为匹配的开头
比如,
^once 表示以 once开头的
^上一页
而在本示例中,需要匹配以 多个空格 +※版本出处 开头的字符串
所以可以这么写
^\s*※版本出处
其中,s*※版本出处 代表:多个空格,空格之后紧跟着 ※版本出处
^\s*※版本出处 代表:以这个开头的字符串
4)$ 以字符串作为结尾
比如 once$
在字符串后面加个$, 就代表匹配的信息要以 这个字符串作为结尾
结合本例:我们要匹配 ·著 作为结尾的字符串
所以可以这么写
·著$
5)匹配任意字符 ,包括换行符
[\s\S]+
这个实测可以匹配到换行符
注:匹配任意字符串 但不匹配换行 可以用 .*
比如; 一行内 以w开头的字符串,可以这么写: ^w.* 或者 (w|w).*


6)贪婪匹配 非贪婪匹配
贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,
非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配
对于本例,如果这么写
^\s*※版本出处[\s\S]+·著$
匹配以 ※版本出处为开始, 以·著为结尾的字符串, 会发现,它会一直匹配到小说的末尾,把中间的小说章节内容也匹配进去了,显然不是我们希望的。
因为,默认是使用贪婪匹配
怎么才能换成非贪婪匹配呢?
就是在量词后面直接加一个?
下面的都是量词:
{m,n}:m到n个
*:任意多个
+:一个到多个
?:0或一个
几个常用的非贪婪匹配Pattern:
*? 重复任意次,但尽可能少重复
+? 重复1次或更多次,但尽可能少重复
?? 重复0次或1次,但尽可能少重复
{n,m}? 重复n到m次,但尽可能少重复
{n,}? 重复n次以上,但尽可能少重复
综上所述,对于我们的例子,可以这么写 [\s\S]+?
总的匹配模式如下:
^\s*※版本出处[\s\S]+?·著$
代表 :匹配以※版本出处为开头、以·著为结尾的 可跨行的字符串,但尽量少重复


7)、删除VSCODE 多余空行
-
按 Ctrl + H 打开 “查找和替换”。
-
点击 齿轮图标 ⚙️ → 使用正则表达式。
-
输入以下内容:
查找内容:
^\s*\r?\n替换为:
(留空)
本文介绍了如何运用正则表达式在TXT小说中匹配并替换特定格式的信息,如‘※版本出处:旧雨阁扫校※’等。详细解释了正则规则,包括空格匹配、开头和结尾标识、任意字符匹配以及贪婪和非贪婪匹配的概念,并给出了最终的匹配模式`^s*※版本出处[sS]+?·著$`。
1140

被折叠的 条评论
为什么被折叠?



