sublime 正则跨行匹配

本文介绍了如何运用正则表达式在TXT小说中匹配并替换特定格式的信息,如‘※版本出处:旧雨阁扫校※’等。详细解释了正则规则,包括空格匹配、开头和结尾标识、任意字符匹配以及贪婪和非贪婪匹配的概念,并给出了最终的匹配模式`^s*※版本出处[sS]+?·著$`。

目录

场景:

用到的正则规则

1)空格

2) 若干个空格

3)^以字符串为匹配的开头

4)$ 以字符串作为结尾

5)匹配任意字符 ,包括换行符

6)贪婪匹配  非贪婪匹配


场景:

在一个小说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

    替换为:
    (留空)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清水迎朝阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值