下面由notepad教程欄目給大家介紹notepad++正則表達式替換字符串的方法,希望對需要的朋友有所幫助!
則表達式是一個查詢的字符串,它包含一般的字符和一些特殊的字符,特殊字符可以擴展查找字符串的能力,正則表達式在查找和替換字符串的作用不可忽視,它 能很好提高工作效率。?
editplus的查找,替換,文件中查找支持以下的正則表達式:?
表達式?說明? ?/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]?
一、包含“hello word”的行
^.*hello word.*$
二、以“hello word”開始的行
^hello word.*$
三、以“hello word”結尾的行
.*hello word$
替換為:
查找目標n([a-zA-Z0-9])
或者r([a-zA-Z0-9])
替換目標$1(http前面的換行變成? ?‘,’? ?,然后再加其他的)
【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]”,不含引號?
“替換為:”里面輸入“[/0/1/2]”,不含引號?
范圍為你所操作的范圍,然后選擇替換即可。?
實際上這也是正則表達式的使用特例,“[0-9]”表示匹配0~9之間的任何特例,同樣“[a-z]”就表示匹配a~z之間的任何特例?
上面重復使用了“[0-9]”,表示連續出現的三個數字?
“/0”代表第一個“[0-9]”對應的原型,“/1”代表第二個“[0-9]”對應的原型,依此類推?
“[”、“]”為單純的字符,表示添加“[”或“]”,如果輸入“其它/0/1/2其它”,則替換結果為:?
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$”?
這里“$”表示從行尾匹配?
如果從行首匹配,可以用“^”來實現,不過 EditPlus 有另一個功能可以很簡單的刪除行首的字符串?
a. 選擇要操作的行?
b. 編輯-格式-刪除行注釋?
c. 在彈出對話框里面輸入要清除的行首字符,確定?
【4】正則表達式應用——替換帶有半角括號的多行?
幾百個網頁中都有下面一段代碼:?
/n?
在替換對話框啟用“正則表達式”選項,這時就可以完成替換了?
【5】正則表達式應用——刪除空行?
啟動EditPlus,打開待處理的文本類型文件。?
①、選擇“查找”菜單的“替換”命令,彈出文本替換對話框。選中“正則表達式”復選框,表明我們要在查找、替換中使用正則表達式。然后,選中“替換范圍” 中的“當前文件”,表明對當前文件操作。?
②、單擊“查找內容”組合框右側的按鈕,出現下拉菜單。?
③、下面的操作添加正則表達式,該表達式代表待查找的空行。(技巧提示:空行僅包括空格符、制表符、回車符,且必須以這三個符號之一作為一行的開頭,并且 以回車符結尾,查找空行的關鍵是構造代表空行的正則表達式)。?
直接在”查找”中輸入正則表達式“^[ /t]*/n”,注意/t前有空格符。?
(1)選擇“從行首開始匹配”,“查找內容”組合框中出現字符“^”,表示待查找字符串必須出現在文本中一行的行首。?
(2)選擇“字符在范圍中”,那么在“^”后會增加一對括號“[]”,當前插入點在括號中。括號在正則表達式中表示,文本中的字符匹配括號中任意一個字符 即符合查找條件。?
(3)按一下空格鍵,添加空格符。空格符是空行的一個組成成分。?
(4)選擇“制表符”,添加代表制表符的“/t”。?
(5)移動光標,將當前插入點移到“]”之后,然后選擇“匹配 0 次或更多”,該操作會添加星號字符“*”。星號表示,其前面的括號“[]”內的空格符或制表符,在一行中出現0個或多個。?
(6)選擇“換行符”,插入“/n”,表示回車符。?
④、“替換為”組合框保持空,表示刪除查找到的內容。單擊“替換”按鈕逐個行刪除空行,或單擊“全部替換”按鈕刪除全部空行(注意:EditPlus有時 存在“全部替換”不能一次性完全刪除空行的問題,可能是程序bug,需要多按幾次按鈕)。?
1.在漢化的時候,是否經常碰到這樣的語句需要翻譯:?
Code:?
“Error adding the post!”;?
“Error adding the comment!”;?
“Error adding the user!”;?
如果有很多類似的文件一個一個翻譯顯然很累而且感覺很無聊。?
其實可以這樣處理,在Editplus里面用 替換 功能,在替換對話框選中“正則表達式”復選框:?
查找原文件:?
Code:?
“Error adding ([^!|”|;]*)?
替換成:?
Code:?
“在增加/1時發生錯誤?
這樣替換之后發生了什么?結果是:?
Code:?
“在增加the post時發生錯誤!”;?
“在增加the comment時發生錯誤!”;?
“在增加the user時發生錯誤!”;?
ok,接下來你會怎么做?當然再替換一次把the post、the comment、the user替換成你要翻譯的詞。得到最后的結果:?
Code:?
“在增加帖子時發生錯誤!”;?
“在增加評論時發生錯誤!”;?
“在增加用戶時發生錯誤!”;?
2.要提取的單詞在中間,比如:?
Code:? ?can?not?be?deleted?because? ?can?not?be?added?because? ?can?not?be?updating?because
可以用這種方式:?
在Editplus里面用 替換 功能,在替換對話框選中“正則表達式”復選框:?
查找原文件:?
Code:?
can not be ([^ ]*) because?
替換成:?
Code:?
無法被/1因為?
這樣替換之后發生了什么?結果是:?
Code:?
無法被deleted因為?
無法被added因為?
無法被updating因為?
其余步驟如上。?
在漢化量很大而且句式比較單調的情況下對效率的提高很明顯!?
解釋一下:([^!|”|;]*) 的意思是 不等于 ! 和 ” 和 ; 中的任何一個,意思就是這3個字符之外的所有字符將被選中(替換區域);?
/1 即被選中的替換區域所在的新位置(復制到這個新位置)。?
3.經常手工清理一行一行地刪除文本文件里面的空白行,其實可以交給Editplus更好的完成,在Editplus里面用替換功能,在替換對話框選中 “正則表達式”復選框:?
查找原文件:?
Code:?
^[ /t]*/n?
替換部分為空就可以刪除空白行了,執行一下看看:)?
abandon[2”b9nd2n]v.拋棄,放棄?
abandonment[2”b9nd2nm2nt]n.放棄?
abbreviation[2bri:vi”ei62n]n.縮寫?
abeyance[2”bei2ns]n.緩辦,中止?
abide[2”baid]v.遵守?
ability[2”biliti]n.能力?
able[”eibl]adj.有能力的,能干的?
abnormal[9b”n0:m2l]adj.反常的,變態的?
aboard[2”b0:d]adv.船(車)上?
1.?
查找: (^[a-zA-Z0-0/-]+)(/[*.*/]+)(.*)?
替換: @@@@@”/1″,”/2″,”/3″,?
效果:?
@@@@@”abandon”,”[2”b9nd2n]“,”v.拋棄,放棄”,?
@@@@@”abandonment”,”[2”b9nd2nm2nt]“,”n.放棄”,?
@@@@@”abbreviation”,”[2bri:vi”ei62n]“,”n.縮寫”,?
@@@@@”abeyance”,”[2”bei2ns]“,”n.緩辦,中止”,?
@@@@@”abide”,”[2”baid]“,”v.遵守”,?
@@@@@”ability”,”[2”biliti]“,”n.能力”,?
@@@@@”able”,”[”eibl]“,”adj.有能力的,能干的”,?
@@@@@”abnormal”,”[9b”n0:m2l]“,”adj.反常的,變態的”,?
@@@@@”aboard”,”[2”b0:d]“,”adv.船(車)上”,?
2.?
查找: /n?
替換:?
注: 要次替換內容為空?
效果:?
@@@@@”abandon”,”[2”b9nd2n]“,”v.拋棄,放棄 ”,@@@@@”abandonment”,”[2”b9nd2nm2nt]“,”n.放棄 ”,@@@@@”abbreviation”,”[2bri:vi”ei62n]“,”n.縮寫 ”,@@@@@”abeyance”,”[2”bei2ns]“,”n.緩辦,中止”,@@@@@”abide”,”[2”baid]“,”v.遵守 ”,@@@@@”ability”,”[2”biliti]“,”n.能力”,@@@@@”able”,”[”eibl]“,”adj.有能力的,能 干的 ”,@@@@@”abnormal”,”[9b”n0:m2l]“,”adj.反常的,變態的 ”,@@@@@”aboard”,”[2”b0:d]“,”adv.船(車)上”,@@@@@”abolish”,”[2”b0li6]“,”v.廢 除,取消”,@@@@@”abolition”,”[9b2”li62n]“,”n.廢除,取消”?
3.?
查找: @@@@@?
替換: /n?
效果:?
“abandon”,”[2”b9nd2n]“,”v.拋棄,放棄”,?
“abandonment”,”[2”b9nd2nm2nt]“,”n.放棄”,?
“abbreviation”,”[2bri:vi”ei62n]“,”n.縮寫”,?
“abeyance”,”[2”bei2ns]“,”n.緩辦,中止”,?
“abide”,”[2”baid]“,”v.遵守”,?
“ability”,”[2”biliti]“,”n.能力”,?
“able”,”[”eibl]“,”adj.有能力的,能干的”,?
“abnormal”,”[9b”n0:m2l]“,”adj.反常的,變態的”,?
“aboard”,”[2”b0:d]“,”adv.船(車)上”,?
“abolish”,”[2”b0li6]“,”v.廢除,取消”,?
4. 任務完成
一、刪除空行(不包括有空格類符號的空行)?
1、rn轉義符替換?
按ctrl+h,跳出搜索替換框,把查找模式定義為擴展(n,r…)?
查找目標:rnrn?
替換為:rn
有編程基礎的讀者應該知道是什么意思了。
2、Textfx插件?
先選中要刪部分文本內容,如果是整個文件那就全選Ctrl+A,然后使用Notepad++自帶的Textfx插件,在長長的列表中找到Delete Blank Lines,點擊即可。
注意Notepad++的正則表達式與轉義符等之間不兼容,所以局限性較大,不可以直接用正則表達式替換。
二、刪除有空格的空行?
1、先刪除空格,后刪除空行?
如何刪除只有空格行的空格??
在菜單編輯中找到Blank Operations(行編輯),點擊移除行尾空白,再用上面的方法刪除空行。
2、使用正則表達式刪除空格行空格?
替換中查找模式選擇正則表達式^ +$,替換為空(就是什么都不填),再用上面的方法刪除空行。