sublime 正则跨行匹配

您所在的位置:网站首页 sublime换行符是什么 sublime 正则跨行匹配

sublime 正则跨行匹配

2023-08-12 18:39| 来源: 网络整理| 查看: 265

目录

场景:

用到的正则规则

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]+?·著$

代表 :匹配以※版本出处为开头、以·著为结尾的 可跨行的字符串,但尽量少重复

       



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3