擴展正則表達式


擴展正則表達式

事實上,一般實驗者只需要熟悉基礎的正則表達式就足夠了。不過有時候為了簡化命令操作,了解一些使用范圍更廣的擴展表達式,會更加方便。

一、簡單對比

正規表示法:

$ grep -v '^$' regular_express.txt |grep -v '^#' 

需要使用到管線命令來搜尋兩次! 那么如果使用延伸型的正規表示法,我們可以簡化為:

$ egrep -v '^$|^#' regular_express.txt 

利用支持延伸型正規表示法的 egrep 與特殊字符 “|” 的組功能來區隔兩組字符串,如此一來,是否方便很多呢?

此外,grep 默認僅支持基礎正則表達式,如果要使用擴展性正則表達式,可以使用 grep - E。grep -E 與 egrep 相當於命令別名關系。

二、擴展規則

1、 + :表示重復一個或一個以上的前一個 RE 字符

$ egrep -n 'go+d' regular_express.txt 

普通寫法:

 $ grep -n 'goo*d' regular_express.txt 

2、 ? : 表示重復零個或一個前一個 RE 字符

$ egrep -n 'go?d' regular_express.txt 

操作截圖:

圖片描述信息

上述三條命令結果如上,發現 ‘goo*d’ 與 ‘go+d’ 等同,而 ‘go?d’ 結果不同。

3、 | :表示用或的方式找出數個字符串

$ egrep -n 'gd|good' regular_express.txt 

4、 () : 表示找出群組字符串

$ egrep -n 'g(la|oo)d' regular_express.txt 也就是搜尋(glad)或 good 這兩個字符串 

操作截圖:

圖片描述信息

5、()+ : 多個重復群組判別

$ echo 'AxyzxyzxyzxyzC'|egrep 'A(xyz)+C' $ echo 'AxyzxyzxyzxyzC'|egrep 'A(xz)+C' 

也就是要找開頭是 A 結尾是 C 中間有一個以上的 ‘xyz’ 或 ‘xz’ 字符串的意思。

結果顯示 ‘A(xyz)+C’ 可以匹配, ‘A(xz)+C’ 沒有匹配項。

操作截圖:

圖片描述信息


免責聲明!

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



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