正則匹配與替換 regexp & regsub

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

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

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

(注:regexp & regsub 的操做對象是字符文本,若是須要直接對文件進行處理,可使用 sed & awk )工具

sed & awk 的用法參考這篇博文:  sed & awk的用法 spa

regexp設計

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

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

第一種用法舉例   regexp  {^([0-9]+[a-z]+|[A-Z]+[0-9]+)$}  123abc,這個正則表達式用於匹配「數字開頭且小寫字母結尾」 或者 「大寫字母開頭且數字結尾」 的表達式,因此返回值爲 1對象

詳細解釋: ^ 匹配開頭,$ 匹配結尾,中間的 | 表示 「或」, + 表示前面的字符出現一次或者屢次blog

第二種用法子串匹配舉例   regexp  {([0-9]+)\s([a-z]+)}  "there are 100 apples"   str01   sub01   sub02  ,這個正則表達式用於匹配「一個或多個數字加一個空格加一個或多個小寫字母」,返回1

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

 

regsub

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

舉例   regsub  {there}  「they live there lives」  their  x  , 正則表達式爲 there ,匹配字符串中的單詞 there,將其替換爲 their,並將替換後的字符串存入變量 x, 返回 1,因此變量 x 的值就是  $x="they live their lives" 

注意:  regsub 有個選項 -all,若是沒有這個開這個選項,則只替換第一個匹配, 不然替換全部匹配到的目標

相關文章
相關標籤/搜索