正則匹配與替換 regexp regsub

2022-01-29 06:30:11 字數 1296 閱讀 2704

正則匹配是使用正規表示式匹配字串的一種方法;在指令碼編寫過程中,經常需要處理一些文字,而這些文字中可能只有部分資訊是有用的,我們需要從文字中提取出這些有用資訊;這時候,就需要編寫特定格式的正規表示式,將文字中符合正規表示式的字串抓取出來,然後對其進行分解、組合、替換等處理,得到符合需求的處理結果。

正規表示式十分靈活,這也使其具有強大的匹配能力,熟練的編寫正規表示式,幾乎可以匹配任何形式的字串。因此,在指令碼設計中,熟練地使用正規表示式,是一種十分重要的技能,可以有效的提高指令碼的執行效率。

使用正規表示式需要借助兩個重要工具:regexp 和 regsub,分別用於匹配和替換。

(注:regexp & regsub 的操作物件是字元文字,如果需要直接對檔案進行處理,可以使用 sed  )

sed  的用法參考這篇博文:   linux sed 命令常見用法

regexp

regexp 是用於判斷正規表示式是否全部或者部分匹配目標字串的命令,匹配返回 1,否則返回 0。

regexp 有兩種用法,一種是僅匹配,另一種是匹配子串

第一種用法舉例:

regexp    123abc

這個正規表示式用於匹配 「數字開頭且小寫字母結尾」 或者 「大寫字母開頭且數字結尾」 的表示式,所以返回值為 1

詳細解釋: ^ 匹配開頭,$ 匹配結尾,中間的 | 表示 「或」,[0-9] 表示乙個0到9之間的阿拉伯數字,[a-z] 表示 a 到 z 之間的乙個小寫字母, + 表示前面的字元出現一次或者多次

第二種用法子串匹配舉例  

這個正規表示式用於匹配「乙個或多個數字,接著是乙個空格,然後再跟乙個或多個小寫字母」

匹配成功就返回1,並將匹配到的字串儲存到 str01,第乙個子串儲存到 sub01,第二個子串儲存到 sub02

regsub

regsub 是用於對目標字串中滿足正規表示式的部分進行替換,並將替換後的結果存入新的變數中,匹配成功返回 1,否則返回 0。

比如:regsub    「they live there lives」   their   str  

正規表示式為 there ,匹配字串中的單詞 there,將其替換為 their,並將替換後的整個字串存入變數 str, 返回值為 1,

所以變數 str 的值就是  $str="they live their lives" 

注意:  regsub 有個選項 -all,如果沒有這個開這個選項,則只替換第乙個匹配, 否則替換所有匹配到的目標

|-------------------------------------|

關於正則匹配替換

這段時間在做專案的時候遇到要替換一堆字串中的乙個檔案路徑,其他內容保持不變,最開始是使用的用標點符號去分割字串,找到對應的語句,對該語句直接進行替換,在這其中需要迴圈去處理這個事情。所以這並不是乙個很好的方法,後面經過高人指點 實在是自己有點水,很少接觸正規表示式 這種替換也能夠使用正則替換。上 l...

PHP正則匹配與替換的簡單例子

php正則匹配與替換的簡單例子,含乙個匹配獲取加租字型例子和乙個匹配替換超連結的例子。1 查詢匹配與標籤的內容 str name php title programming language preg match all b u str,arr print r arr 0 執行結果如下所示 arra...

editplus與正則替換

2007 07 19 20 06 tag 正規表示式 批量替換 editplus 替換html檔案中的非法 下面的方法將把html檔案中類似於的非html標記的尖括號替換掉。例如,將用下面方法替換的結果是 這裡只提供了解決問題的思路。具體的應用,要看具體的情況。查詢內容 替換內容 解釋 要查詢的尖括...