sublime 正则跨行匹配
目錄
場(chǎng)景:
用到的正則規(guī)則
1)空格
2) 若干個(gè)空格
3)^以字符串為匹配的開頭
4)$ 以字符串作為結(jié)尾
5)匹配任意字符 ,包括換行符
6)貪婪匹配? 非貪婪匹配
場(chǎng)景:
在一個(gè)小說TXT中,頻繁的添加了
類似下面的信息
※版本出處:舊雨閣掃校※ 上一頁回目錄下一頁 lwj@cser 制作更多精彩E書請(qǐng)?jiān)L問“wbzd”2009年10月12日 星期一 2:43:17 PM《舊派武俠合集》lwj@cser制作 2009.8江湖奇?zhèn)b傳 - 第三十二回 驚變卦孝子急親仇 污佛地淫徒受重創(chuàng)目錄 白蓮英雄傳 偷拳 荒江女俠 江湖怪異傳 江湖奇?zhèn)b傳 近代俠義英雄傳 沉劍飛龍記 藍(lán)田女俠 鷹爪王 羅剎夫人 七殺碑 制作說明 使用說明《江湖奇?zhèn)b傳》平江不肖生·著需要匹配這些信息,然后批量替換掉。
以? ?空格? ※版本出處為開頭,以·著 為結(jié)束
用到的正則規(guī)則
1)空格
\s
2) 若干個(gè)空格
\s*? (可以是0個(gè))
\s+ (至少1個(gè)空格)
3)^以字符串為匹配的開頭
比如,
^once 表示以 once開頭的^上一頁? ?
而在本示例中,需要匹配以? 多個(gè)空格 +※版本出處? 開頭的字符串
所以可以這么寫
^\s*※版本出處??
其中,s*※版本出處? 代表:多個(gè)空格,空格之后緊跟著 ※版本出處??
? ? ? ? ? ^\s*※版本出處? ?代表:以這個(gè)開頭的字符串
4)$ 以字符串作為結(jié)尾
比如? once$
在字符串后面加個(gè)$,? 就代表匹配的信息要以? 這個(gè)字符串作為結(jié)尾
結(jié)合本例:我們要匹配? ?·著? 作為結(jié)尾的字符串
所以可以這么寫
·著$
5)匹配任意字符 ,包括換行符
[\s\S]+? ? ??
這個(gè)實(shí)測(cè)可以匹配到換行符
注:匹配任意字符串 但不匹配換行 可以用? ? ? .*?
比如; 一行內(nèi) 以w開頭的字符串,可以這么寫:??^w.*? 或者?(w|w).*
6)貪婪匹配? 非貪婪匹配
貪婪模式在整個(gè)表達(dá)式匹配成功的前提下,盡可能多的匹配,
非貪婪模式在整個(gè)表達(dá)式匹配成功的前提下,盡可能少的匹配
對(duì)于本例,如果這么寫
^\s*※版本出處[\s\S]+·著$
匹配以 ※版本出處為開始, 以·著為結(jié)尾的字符串, 會(huì)發(fā)現(xiàn),它會(huì)一直匹配到小說的末尾,把中間的小說章節(jié)內(nèi)容也匹配進(jìn)去了,顯然不是我們希望的。
因?yàn)?#xff0c;默認(rèn)是使用貪婪匹配
怎么才能換成非貪婪匹配呢?
就是在量詞后面直接加一個(gè)?
下面的都是量詞:
? ? ? ?{m,n}:m到n個(gè)
*:任意多個(gè)
? ?+:一個(gè)到多個(gè)
? ? ? ? ? ? ? ?:0或一個(gè)
幾個(gè)常用的非貪婪匹配Pattern:
*??重復(fù)任意次,但盡可能少重復(fù)?? +??重復(fù)1次或更多次,但盡可能少重復(fù)?? ???重復(fù)0次或1次,但盡可能少重復(fù)?? {n,m}??重復(fù)n到m次,但盡可能少重復(fù)?? {n,}??重復(fù)n次以上,但盡可能少重復(fù) ?綜上所述,對(duì)于我們的例子,可以這么寫? [\s\S]+?
總的匹配模式如下:
^\s*※版本出處[\s\S]+?·著$
代表 :匹配以※版本出處為開頭、以·著為結(jié)尾的 可跨行的字符串,但盡量少重復(fù)
? ? ? ?
總結(jié)
以上是生活随笔為你收集整理的sublime 正则跨行匹配的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 开发你自己的Android 授权管理器
- 下一篇: 轻松注册WinRAR的小方法