1. 程式人生 > >Notepad++正則表示式應用

Notepad++正則表示式應用

Notepad++正則表示式使用教程

表示式 說明 
\t  製表符.
\n 新行.
.  匹配任意字元.
| 匹配表示式左邊和右邊的字元. 例如, "ab|bc" 匹配 "ab" 或者 "bc".
[] 匹配列表之中的任何單個字元. 例如, "[ab]" 匹配 "a" 或者 "b". "[0-9]" 匹配任意數字.
[^] 匹配列表之外的任何單個字元. 例如, "[^ab]" 匹配 "a" 和 "b" 以外的字元. "[^0-9]" 匹配任意非數字字元.
* 其左邊的字元被匹配任意次(0次,或者多次). 例如 "be*" 匹配 "b", "be" 或者 "bee".
+ 其左邊的字元被匹配至少一次(1次,或者多次). 例如 "be+" 匹配 "be" 或者 "bee" 但是不匹配 "b".
? 其左邊的字元被匹配0次或者1次. 例如 "be?" 匹配 "b" 或者 "be" 但是不匹配 "bee".
^ 其右邊的表示式被匹配在一行的開始. 例如 "^A" 僅僅匹配以 "A" 開頭的行.
$ 其左邊的表示式被匹配在一行的結尾. 例如 "e$" 僅僅匹配以 "e" 結尾的行.
() 圓括號“(”和“)”分別為匹配區域的起始和結束,並且用作表示式的分組標記.
\ 轉義字元. 如果你要使用 "\" 本身, 則應該使用 "\\".

例子: 
原始串
str[1]abc[991];
str[2]abc[992];
str[11]abc[993];
str[22]abc[994];
str[111]abc[995];
str[222]abc[996];
str[1111]abc[997];
str[2222]abc[999];

目標串:
abc[1];
abc[2];
abc[11];
abc[22];
abc[111];
abc[222];
abc[1111];
abc[2222];

處理:
查詢串:str\[([0-9]+)\]abc\[[0-9]+\]
替換串:abc[\1]  \1就代表上述"查詢串"([0-9]+)的結果任意多個數字串

【1】正則表示式應用——替換指定內容到行尾
原始文字如下面兩行
abc aaaaa
123 abc 444

希望每次遇到“abc”,則替換“abc”以及其後到行尾的內容為“abc efg”
即上面的文字最終替換為:
abc efg
123 abc efg

解決:
① 在替換對話方塊,查詢內容裡輸入“abc.*”
② 同時勾選“正則表示式”複選框,然後點選“全部替換”按鈕
其中,符號的含義如下:
“.” =匹配任意字元
“*” =匹配0次或更多

注意:其實就是正則表示式替換,這裡只是把一些曾經提出的問題加以整理,單純從正則表示式本身來說,就可以引申出成千上萬種特例。

【2】正則表示式應用——數字替換
希望把
asdadas123asdasdas456asdasdasd789asdasd
替換為:
asdadas[123]asdasdas[456]asdasdasd[789]asdasd

在替換對話方塊裡面,勾選“正則表示式”複選框;
在查詢內容裡面輸入“([0-9])([0-9])([0-9])”,不含引號
“替換為:”裡面輸入“[\1\2\3]”,不含引號
範圍為你所操作的範圍,然後選擇替換即可。

實際上這也是正則表示式的使用特例,“[0-9]”表示匹配0~9之間的任何特例,同樣“[a-z]”就表示匹配a~z之間的任何特例
上面重複使用了“[0-9]”,表示連續出現的三個數字
“\1”代表第一個“[0-9]”對應的原型,“\2”代表第二個“[0-9]”對應的原型,在替換表示式中,“\1”表示第一個匹配區域所匹配的內容, 依此類推,“\n”表示第 n(可取 1-9)個匹配區域所匹配的內容(在notepad++中\0沒有意義)。“[”、“]”為單純的字元,表示新增“[”或“]”,如果輸入“其它\1\2 \3其它”,則替換結果為:

asdadas其它123其它asdasdas其它456其它asdasdasd其它789其它asdasd

功能增強(by jiuk2k):
如果將查詢內容“[0-9][0-9][0-9]”改為“[0-9]*[0-9]”,對應1 或 123 或 12345 或 …  大家根據需要定製
相關內容還有很多,可以自己參考正則表示式的語法仔細研究一下

【3】正則表示式應用——刪除每一行行尾的指定字元
因為這幾個字元在行中也是出現的,所以肯定不能用簡單的替換實現
比如
12345 1265345
2345
需要刪除每行末尾的“345”
這個也算正則表示式的用法,其實仔細看正則表示式應該比較簡單,不過既然有這個問題提出,說明對正則表示式還得有個認識過程,解決方法如下
解決:
在替換對話方塊中,啟用“正則表示式”複選框
在查詢內容裡面輸入“345$”
這裡“$”表示從行尾匹配

【4】正則表示式應用——替換帶有半形括號的多行
幾百個網頁中都有下面一段程式碼:
\n
在替換對話方塊啟用“正則表示式”選項,這時就可以完成替換了

【5】正則表示式應用——刪除空行
啟動EditPlus,開啟待處理的文字型別檔案。
①、選擇“查詢”選單的“替換”命令,彈出文字替換對話方塊。選中“正則表示式”複選框,表明我們要在查詢、替換中使用正則表示式。然後,選中“替換範圍” 中的“當前檔案”,表明對當前檔案操作。
②、單擊“查詢內容”組合框右側的按鈕,出現下拉選單。
③、下面的操作新增正則表示式,該表示式代表待查詢的空行。(技巧提示:空行僅包括空格符、製表符、回車符,且必須以這三個符號之一作為一行的開頭,並且 以回車符結尾,查詢空行的關鍵是構造代表空行的正則表示式)。
直接在”查詢”中輸入正則表示式“^[ \t]*\n”,注意\t前有空格符。
(1)選擇“從行首開始匹配”,“查詢內容”組合框中出現字元“^”,表示待查詢字串必須出現在文字中一行的行首。
(2)選擇“字元在範圍中”,那麼在“^”後會增加一對括號“[]”,當前插入點在括號中。括號在正則表示式中表示,文字中的字元匹配括號中任意一個字元 即符合查詢條件。
(3)按一下空格鍵,新增空格符。空格符是空行的一個組成成分。
(4)選擇“製表符”,新增代表製表符的“\t”。
(5)移動游標,將當前插入點移到“]”之後,然後選擇“匹配 0 次或更多”,該操作會新增星號字元“*”。星號表示,其前面的括號“[]”內的空格符或製表符,在一行中出現0個或多個。
(6)選擇“換行符”,插入“\n”,表示回車符。