sublime 正则跨行匹配
目錄
場景:
用到的正則規則
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]+?·著$
代表 :匹配以※版本出處為開頭、以·著為結尾的 可跨行的字符串,但盡量少重復
? ? ? ?
總結
以上是生活随笔為你收集整理的sublime 正则跨行匹配的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 开发你自己的Android 授权管理器
- 下一篇: 轻松注册WinRAR的小方法