正則匹配與替換 regexp & regsub


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

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

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

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

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

regexp

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

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

第一種用法舉例:

regexp  {^([0-9]+[a-z]+|[A-Z]+[0-9]+)$}  123abc

這個正則表達式用於匹配 “數字開頭且小寫字母結尾” 或者 “大寫字母開頭且數字結尾” 的表達式,所以返回值為 1

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

第二種用法子串匹配舉例  

regexp  {([0-9]+)\s([a-z]+)}  "there are 100 apples"   str01   sub01   sub02 

這個正則表達式用於匹配“一個或多個數字,接着是一個空格,然后再跟一個或多個小寫字母”

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

詳細解釋: 表達式中包括兩個子串 ([0-9]+) 和 ([a-z]+),所以 str01="100 apples"    子串 sub01=100    子串 sub02=apples

 

regsub

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

比如:

regsub  {there}  “they live there lives”   their   str  

正則表達式為 there ,匹配字符串中的單詞 there,將其替換為 their,並將替換后的整個字符串存入變量 str, 返回值為 1,

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

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

 

 

 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM