首頁 > 軟體

一篇文章瞭解正規表示式的替換技巧

2022-02-24 10:00:40

1.正規表示式應用——替換指定內容到行尾

原始文字如下面兩行

abc aaaaa
123 abc 444

希望每次遇到“abc”,則替換“abc”以及其後到行尾的內容為“abc efg”

即上面的文字最終替換為:

abc efg
123 abc efg

解決:

① 在替換對話方塊,查詢內容裡輸入“abc.*”,替換內容輸入為“abc efg”

② 同時勾選“正規表示式”核取方塊,然後點選“全部替換”按鈕

其中,符號的含義如下:

“.” =匹配任意字元

“*” =匹配0次或更多

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

2.正規表示式應用——數位替換

希望把

asdadas123asdasdas456asdasdasd789asdasd

替換為:

asdadas[123]asdasdas[456]asdasdasd[789]asdasd

在替換對話方塊裡面,勾選“正規表示式”核取方塊;

在查詢內容裡面輸入“([0-9])([0-9])([0-9])”,不含引號

“替換為:”裡面輸入“[123]”,不含引號

####備註####:查詢([0-9]+) 替換:[1] 更簡單通用些

範圍為你所操作的範圍,然後選擇替換即可。

實際上這也是正規表示式的使用特例,“[0-9]”表示匹配0~9之間的任何特例,同樣“[a-z]”就表示匹配a~z之間的任何特例

上面重複使用了“[0-9]”,表示連續出現的三個數位

括號用來選擇原型,進行分組,替換時要用

“1”代表第一個“[0-9]”對應的原型,“2”代表第二個“[0-9]”對應的原型,依此類推

“[”|“]”為單純的字元,表示新增“[”或“]”,如果輸入“其它123其它”,則替換結果為:

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

功能增強:

如果將查詢內容“[0-9][0-9][0-9]”改為“[0-9]*[0-9]”,對應1 或 123 或 12345 或 ...

大家根據需要客製化

相關內容還有很多,可以自己參考正規表示式的語法仔細研究一下

3.正規表示式應用——刪除每一行行尾的指定字元

因為這幾個字元在行中也是出現的,所以肯定不能用簡單的替換實現

比如

12345 1265345
2345

需要刪除每行末尾的“345”

這個也算正規表示式的用法,其實仔細看正規表示式應該比較簡單,不過既然有這個問題提出,說明對正規表示式還得有個認識過程,解決方法如下

解決:

在替換對話方塊中,啟用“正規表示式”核取方塊

在查詢內容裡面輸入“345$”

這裡“$”表示從行尾匹配

如果從行首匹配,可以用“^”來實現,不過 EditPlus 有另一個功能可以很簡單的刪除行首的字串

a. 選擇要操作的行

b. 編輯-格式-刪除行註釋

c. 在彈出對話方塊裡面輸入要清除的行首字元,確

4.正規表示式應用——替換帶有半形括號的多行

幾百個網頁中都有下面一段程式碼:

<script LANGUAGE=JavaScript1.1>
<!--
htmlAdWH('93163607', '728', '90');
//-->
</SCRIPT>

我想把它們都去掉,可是找了很多search & replace的軟體,都是隻能對“一行”進行操作。

EditPlus 開啟幾百個網頁檔案還是比較順暢的,所以完全可以勝任這個工作。

具體解決方法,在 Editplus 中使用正規表示式,由於“(”、“)”被用做預設表示式(或者可以稱作子表示式)的標誌,所以查詢

“<script LANGUAGE=JavaScript1.1>n<!--nhtmlAdWH('93163607', '728', '90'.);n//-->n</SCRIPT>n”

時會提示查詢不到,所以也就無法進行替換了,這時可以把“(”、“)”使用任意字元標記替代,即半形句號:“.”。替換內容為

<script LANGUAGE=JavaScript1.1>n<!--nhtmlAdWH.'93163607', '728', '90'.;n//-->n</SCRIPT>n

在替換對話方塊啟用“正規表示式”選項,這時就可以完成替換了

補充:

對( ) 這樣的特殊符號,應該用來表示,這也是很標準的regexp語法,可以寫為

<script LANGUAGE=JavaScript1.1>n<!--nhtmlAdWH′93163607′,′728′,′90′′93163607′,′728′,′90′;n//-->n</SCRIPT>n

5.正規表示式應用——刪除空行

啟動EditPlus,開啟待處理的文字型別檔案。

①、選擇“查詢”選單的“替換”命令,彈出文字替換對話方塊。選中“正規表示式”核取方塊,表明我們要在查詢、替換中使用正規表示式。然後,選中“替換範圍”中的“當前檔案”,表明對當前檔案操作。

②、單擊“查詢內容”下拉式方塊右側的按鈕,出現下拉式選單。

③、下面的操作新增正規表示式,該表示式代表待查詢的空行。(技巧提示:空行僅包括空格符、製表符、回車符,且必須以這三個符號之一作為一行的開頭,並且以回車符結尾,查詢空行的關鍵是構造代表空行的正規表示式)。

直接在查詢中輸入正規表示式“^[ t]*n”,注意t前有空格符。

(1)選擇“從行首開始匹配”,“查詢內容”下拉式方塊中出現字元“^”,表示待查詢字串必須出文字中一行的行首。

(2)選擇“字元在範圍中”,那麼在“^”後會增加一對括號“[]”,當前插入點在括號中。括號在正規表示式中表示,文字中的字元匹配括號中任意一個字元即符合查詢條件。

(3)按一下空格鍵,新增空格符。空格符是空行的一個組成成分。

(4)選擇“製表符”,新增代表製表符的“t”。

(5)移動遊標,將當前插入點移到“]”之後,然後選擇“匹配 0 次或更多”,該操作會新增星號字元“*”。星號表示,其前面的括號“[]”內的空格符或製表符,在一行中出現0個或多個。

(6)選擇“換行符”,插入“n”,表示回車符。

④、“替換為”下拉式方塊保持空,表示刪除查詢到的內容。單擊“替換”按鈕逐個行刪除空行,或單擊“全部替換”按鈕刪除全部空行(注意:EditPlus有時存在“全部替換”不能一次性完全刪除空行的問題,可能是程式BUG,需要多按幾次按鈕)。

6.正規表示式應用——範例應用

1.驗證使用者名稱和密碼:(^[a-zA-Z]w{5,15}$)正確格式:[A-Z][a-z]_[0-9]組成,並且第一個字必須為字母6~16位元;

2.驗證電話號碼:(^(\d{3,4}-)\d{7,8}$)正確格式:xxx/xxxx-xxxxxxx/xxxxxxxx;

3.驗證手機號碼:^1[3|4|5|7|8][0-9]\d{8}$;

4.驗證身份證號(15位或18位元數位):\d{14}[[0-9],0-9xX];

5.驗證Email地址:(^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$);

6.只能輸入由數位和26個英文字母組成的字串:(^[A-Za-z0-9]+$) ;

7.整數或者小數:^[0-9]+([.][0-9]+){0,1}$

8.只能輸入數位:^[0-9]*$。

9.只能輸入n位的數位:^d{n}$。

10.只能輸入至少n位的數位:^d{n,}$。

11.只能輸入m~n位的數位:^d{m,n}$。

12.只能輸入零和非零開頭的數位:^(0|[1-9][0-9]*)$。

13.只能輸入有兩位小數的正實數:^[0-9]+(.[0-9]{2})?$。

14.只能輸入有1~3位小數的正實數:^[0-9]+(.[0-9]{1,3})?$。

15.只能輸入非零的正整數:^+?[1-9][0-9]*$。

16.只能輸入非零的負整數:^-[1-9][0-9]*$。

17.只能輸入長度為3的字元:^.{3}$。

18.只能輸入由26個英文字母組成的字串:^[A-Za-z]+$。

19.只能輸入由26個大寫英文字母組成的字串:^[A-Z]+$。

20.只能輸入由26個小寫英文字母組成的字串:^[a-z]+$。

21.驗證是否含有^%&',;=?$等字元:[%&',;=?$\^]+。

22.只能輸入漢字:^[u4e00-u9fa5]{0,}$。

23.驗證URL:^http://([w-]+.)+[w-]+(/[w-./?%&=]*)?$。

24.驗證一年的12個月:^(0?[1-9]|1[0-2])$正確格式為:01~09和10~12。

25.驗證一個月的31天:^((0?[1-9])|((1|2)[0-9])|30|31)$正確格式為;01~09、10~29和“30”~“31”。

26.獲取日期正規表示式:\d{4}[年|-|.]d{1-12}[月|-|.]d{1-31}日?

評註:可用來匹配大多數年月日資訊。

27.匹配雙位元組字元(包括漢字在內):[^ - ]

評註:可以用來計算字串的長度(一個雙位元組字元長度計2,ASCII字元計1)

28.匹配空白行的正規表示式:ns*r

評註:可以用來刪除空白行

29.匹配HTML標記的正規表示式:<(S*?)[^>]*>.*?</>|<.*? />

評註:網上流傳的版本太糟糕,上面這個也僅僅能匹配部分,對於複雜的巢狀標記依舊無能為力

30.匹配首尾空白字元的正規表示式:^s*|s*$

評註:可以用來刪除行首行尾的空白字元(包括空格、製表符、換頁符等等),非常有用的表示式

31.匹配網址URL的正規表示式:[a-zA-z]+://[^s]*

評註:網上流傳的版本功能很有限,上面這個基本可以滿足需求

32.匹配帳號是否合法(字母開頭,允許5-16位元組,允許字母數位下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$

評註:表單驗證時很實用

33.匹配騰訊QQ號:[1-9][0-9]{4,}

評註:騰訊QQ號從10 000 開始

34.匹配中國郵政編碼:[1-9]\d{5}(?!d)

評註:中國郵政編碼為6位數位

35.匹配ip地址:([1-9]{1,3}.){3}[1-9]。

評註:提取ip地址時有用

36.匹配MAC地址:([A-Fa-f0-9]{2}:){5}[A-Fa-f0-9]

總結

到此這篇正規表示式替換技巧的文章就介紹到這了,更多相關正規表示式替換技巧內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com