Notepad++ 是本人最喜愛使用的文檔編輯程式,在近期編寫一套JS程序,需要大量替換某些字符串或特殊符號,在網上找來的資料,可以運用「正則表達式,另稱:規則運算式」功能,把前後多餘的代碼或中間的文字替換掉,並將內容直式(豎排)轉換為橫式(橫排)顯示等!!
以下的 notepad++ 正規表示式(正則表達式)是本人比較常用大量的「換行」或查找「替換」方法,為了方便自己,以免又忘記了,在此記錄一下。同時想共享給大家作為參考之用,若您也有另類的正規表示法,請在文章底部「留言」分享。
先由淺至深,一步一步來。
OK! 開始...
0. 請按鍵盤「CTRL+H」或在上方的導航,點擊「搜尋」欄位,在下拉選單,請按「取代」打開替換視窗。
1. 直式(豎排)內容轉換為橫式(橫排)顯示 請看圖片▼
方法一:
I. 在尋找內容(查找目標)中輸入:\r\n
II. 取代為(替換為):留空(不要輸入任何東西)
III. 搜尋模式:延伸
附加說明:尾部沒有空格
方法二:
請使用鼠標Highlight(全選)所有內容,然後按鍵盤「CTRL+J」或請手動按上方導航的「編輯」下拉選擇「行列處理」再選擇「標示區併行」功能。
附加說明:尾部含有空格
2. 橫式(橫排)內容變更為直式(豎排)顯示 請看圖片▼
方法一:
請首先在其中一個內容的頭或尾部,使用鼠標選取一個「空白」字符,然後開啟取代(替換)視窗。
I. 在尋找內容(查找目標)中輸入:空白字符或給牠一個空格
II. 取代為(替換為):\n
III. 搜尋模式:延伸
方法二:
例如:
橫向顯示:我們人心本善良是也
直向顯示:
我
們
人
心
本
善
良
是
也
I. 在尋找內容(查找目標)中輸入:(.)
II. 取代為(替換為):\1\n
III. 搜尋模式:正規表達式
3. 前後或前或後或頭尾位置,加上HTML標籤或特殊符號 請看圖片▼
例如:ifreesite.com 在前面或後面加上 <a href="...">ifreesite.com</a>
I. 在尋找內容(查找目標)中輸入:(.+)
II. 取代為(替換為):<a href="$1">$1</a>
III. 搜尋模式:規則運算式
附加說明: 如果有多個字符串需要匹配,使用多個小括號並通過「$1、$2、$3……」替換即可。或者自行嘗試不同的匹配方式,有不同的效果出現。
4. 刪除括號或符號內的中英文字或數字 請看圖片▼
方法一:
例如:tor(人心)tes 刪除中間的括號內的東西 tortes
I. 在尋找內容(查找目標)中輸入:(.)如有多個文字如此類推加上「點」為刪除一個字節
II. 取代為(替換為):留空(不要輸入任何東西)
III. 搜尋模式:規則運算式
附加說明: 必須全角符號(中文標點符號)才可,半角符號(英文標點符號)無效。
方法二:
例如:hi[人心566]okay 刪除或替換中間的括號內的東西 hiokay
I. 在尋找內容(查找目標)中輸入:\[.*\]
II. 取代為(替換為):留空或替換其他
III. 搜尋模式:規則運算式
方法三:
例如:sir[善良567]miss 刪除或替換中間的括號內的東西 sir[]miss
I. 在尋找內容(查找目標)中輸入:sir(.*)miss
II. 取代為(替換為):sir[]miss 或 sir[(.*)]miss
III. 搜尋模式:規則運算式
5. 刪除排序的數字或字母 (括號或符號內的數字也可) 請看圖片▼
例如:1. ifreesite.com 2. moonlol.com 不要前方的數字或字母 ifreesite.com moonlol.com
I. 在尋找內容(查找目標)中輸入:數字 [0-9] 或 [0-9]. / 字母 [ab] 或 [ab]. / 字母 [a-z] 或 [a-z].
II. 取代為(替換為):留空(不要輸入任何東西)
III. 搜尋模式:正則表達式
6. 遞增數字或順序數字 請看圖片▼
請按鍵盤「Alt+C」打開直行編輯(列編輯)模式,或請手動按上方導航的「編輯」下拉選擇「列模式編輯」。
在直行編輯視窗,點擊插入數字「初次數字」填"1",如不填由"0"開始,「增量」填"1",想在數字前方加上"0"勾選「齊頭補零」0 前綴。
方法一:
使用「插入數字」功能,ifreesite.com moonlol.com 在前方加上數字或字母排序 1. ifreesite.com 2. moonlol.com
方法二:
使用「插入文字」功能,在行列位置,插入多行內容。
方法三:
使用「插入數字」功能,在行列位置,插入序列數字。
7. 轉換大小寫字母 請看圖片▼
請使用鼠標Highlight 選取英文字母,然後按上方導航的「編輯」-->「轉換大小寫」或按快捷鍵,轉換小寫:「CTRL+U」,轉換大寫:「Ctrl+Shift+U」
8. 替換或去除某個範圍的字符串 請看圖片▼
方法一:
例如:value="403" value="人心" 只要""符號內的文字或數字 403 人心
I. 在尋找內容(查找目標)中輸入:.*"(\d+)" 或 .*"(\w+)"
II. 取代為(替換為):$1
III. 搜尋模式:規則運算式
方法二:
例如:value="403" value="人心" 只需保留前面的 value
I. 在尋找內容(查找目標)中輸入:(.*)="(\d+)" 或 (.*)="(\w+)"
II. 取代為(替換為):$1
III. 搜尋模式:規則運算式
方法三:
例如:value="403" value="人心" 清除""符號內的文字或數字 value="" value=""
I. 在尋找內容(查找目標)中輸入:"(\d+)" 或 "(\w+)"
II. 取代為(替換為):""
III. 搜尋模式:規則運算式
附加說明: 如果有多個字符串需要匹配,使用多個小括號並通過「$1、$2、$3……」替換即可。或者自行嘗試不同的匹配方式,有不同的效果出現。
9. 取代並刪除包含指定字符串的行列
在使用取代功能,我們取代(替換)某一行列的文字或代碼,都會保留空行。
取代前:
取代後:
如果取代行列的物件後,也不想保留空白行。
比如要去掉所有含有"越美好越害怕得到"的行的操作
方法一:保留空行
I. 在尋找內容(查找目標)中輸入:^.*越美好越害怕得到.*$
II. 取代為(替換為):空
III. 搜尋模式:正則表達式
方法二:不保留空行
I. 在尋找內容(查找目標)中輸入:^.*越美好越害怕得到.*\r?\n
II. 取代為(替換為):空
III. 搜尋模式:規則運算式
附加說明:Notepad++的[全部替換]受[方向]約束,所以如果想"向下"全部替換,要把光標放到文首。
示例10:
0 -1 -2 -3 +3 +2 +1
+1 0 -1 -2 -3 +3 +2
替換成:
0,-1,-2,-3,+3,+2,+1
+1,0,-1,-2,-3,+3,+2
方法一 查找串:([A-Z0-9]+) 替換串:\1,
方法二 查找串:^([A-Z0-9]+) 替換串:\1,
示例11:
0,-1,-2,-3,+3,+2,+1
+1,0,-1,-2,-3,+3,+2
替換成:
0,-1,-2,-3,+3,+2,+1},{
+1,0,-1,-2,-3,+3,+2},{
方法一 查找串:(\w)$ 替換串:\1},{
方法二 查找串:^(.*)$ 替換串:\1},{
示例12:
123abcfg
abc
abcd
替換成:
123hello
hello
hello
方法-- 查找串:abc.*$ 替換串:hello
示例13:
123abcfg
abc
abcd
替換成:
123@abcfg@
@abc@
@abcd@
方法-- 查找串:(abc.*)$ 替換串:@\1@
示例14:
str[1]abc[991]
str[2]abc[992]
str[11]abc[993]
str[222]abc[996]
替換成
god[991]
god[992]
god[993]
god[996]
方法1 -- 查找串:str\[[0-9]+\]abc\[([0-9]+)\] 替換串:god[\1]
方法2 -- 查找串:str\[([0-9]+)\]abc\[([0-9]+)\] 替換串:god[\2]
示例15:
刪除所有空行
step1:a. 選擇正則表達式 b. 查找串:^[ \t]*$ 替換串:空
step2:a. 選擇擴展(\n,\r,\t,\0,\x...) b. 查找串:\r\n\r\n 替換串:\r\n 注:多次點擊替換,直到沒有可替換的字串
step3:^[\s]*\n 或 ^(\s*)\r\n
Notepad++ 的列、區塊選取功能
Notepad ++ 可使用區塊選取的功能 (垂直選取特定寬度範圍的區塊)
列模式編輯有兩種方式:
1. 請先按住『ALT』鍵後,然後用『滑鼠左鍵』來拖曳要選取的範圍
ALT + Left Mouse
2. 同時按住『ALT』+『SHIFT』鍵,使用鍵盤『方向鍵』來拉出要選取的範圍
ALT + Shift + Arrow keys
垂直的區塊選取文字,如下圖所示 ▼
Notepad++ 正則表達式語法詳解:
\ 轉義字符 如:要使用“\”本身,則應該使用“\\”
\t Tab製表符 注:擴展和正則表達式都支持
\r 回車符CR 注:擴展支持,正則表達式不支持
\n 換行符LF 注:擴展支持,正則表達式不支持
. 匹配任意字符
^ 其右邊的表達式被匹配在行首。如:^A匹配以“A”開頭的行
$ 其左邊的表達式被匹配在行尾。如:e$匹配以“e”結尾的行
| 或運算符,匹配表達式左邊和右邊的字符串。如: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”
() 影響表達式匹配的順序(類似C++的小括號會影響表達式運算順序),並且用作表達式的分組標記(標記從1開始)注:看上文的示例
\d 匹配一個數字字符。等價於:[0-9]
\D \d 取反,匹配一個非數字字符。等價於:[^0-9]
\s 匹配任意單個空白字符:包括空格、製表符等(注:不包括換車符和換行符)。等價於:[ \t]
\S \s 取反的任意單個字符。
\w 匹配包括下劃線的任意單個字符。等價於:[A-Za-z0-9_]
\W \w 取反的任意單個字符。等價於:[^A-Za-z0-9_]
官方說明: Notepad++ Regular Expressions
結語: 不僅Notepad++,Editplus、DreamWeaver等大多數編輯器同樣支持正則表達式,這些編輯器同樣都可以批量替換指定文件夾中的文件、已打開的文件等,相當強大。對於量大的替換任務,多花點時間了解一下如何應用好正則替換功能,可以為你在工作中結省大量的時間。