正則表達式

      正則表達式:在計算機科學中,是指一個用來描述或者匹配一系列符合某個句法規則的字符串的單個字符串。在不少文本編輯器或其餘工具裏,正則表達式一般被用來檢索和/或替換那些符合某個模式的文本內容。許多程序設計語言都支持利用正則表達式進行字符串操做。正則表達式

說明:只有掌握了正則表達式,才能全面地掌握 Linux 下的經常使用文本工具(例如:grep、egrep、GUN sed、 Awk 等) 的用法。網絡

1、正則表達式分類:編輯器

一、基本的正則表達式(Basic Regular Expression 又叫 Basic RegEx  簡稱 BREs)函數

二、擴展的正則表達式(Extended Regular Expression 又叫 Extended RegEx 簡稱 EREs)工具

三、Perl 的正則表達式(Perl Regular Expression 又叫 Perl RegEx 簡稱 PREs)post

2、Linux 中經常使用文本工具與正則表達式的關係:編碼

常握 Linux 下幾種經常使用文本工具的特色,對於咱們更好的使用正則表達式是頗有幫助的spa

  • grep , egrep 正則表達式特色:

1)grep 支持:BREs、EREs、PREs 正則表達式設計

grep 指令後不跟任何參數,則表示要使用 」BREs「 對象

grep 指令後跟 」-E" 參數,則表示要使用 「EREs「

grep 指令後跟 「-P" 參數,則表示要使用 「PREs"

2)egrep 支持:EREs、PREs 正則表達式

egrep 指令後不跟任何參數,則表示要使用 「EREs」

egrep 指令後跟 「-P" 參數,則表示要使用 「PREs"

3)grep 與 egrep 正則匹配文件,處理文件方法

a. grep 與 egrep 的處理對象:文本文件

b. grep 與 egrep 的處理過程:查找文本文件中是否含要查找的 「關鍵字」(關鍵字能夠是正則表達式) ,若是含有要查找的 」關健字「,那麼默認返回該文本文件中包含該」關健字「的該行的內容,並在標準輸出中顯示出來,除非使用了「>" 重定向符號,

c. grep 與 egrep 在處理文本文件時,是按行處理的

  • sed 正則表達式特色

1)sed 文本工具支持:BREs、EREs

sed 指令默認是使用"BREs"

sed 命令參數 「-r 」 ,則表示要使用「EREs"

2)sed 功能與做用

a. sed 處理的對象:文本文件

b. sed 處理操做:對文本文件的內容進行 --- 查找、替換、刪除、增長等操做

c. sed 在處理文本文件的時候,也是按行處理的

  • Awk(gawk)正則表達式特色

1)Awk 文本工具支持:EREs

awk 指令默認是使用 「EREs"

2)Awk 文本工具處理文本的特色

a. awk 處理的對象:文本文件

b. awk 處理操做:主要是對列進行操做

3、正則表達式:

 基本組成部分

元字符

 4、經常使用的正則表達式匹配

一、非負整數:^\d+ 二、正整數:^[0-9]*[1-9][0-9]*$ 三、非正整數:^((-\d+)|(0+))$ 四、負整數:^-[0-9]*[1-9][0-9]*$五、整數:^-?\d+$ 六、非負浮點數:^\d+(\.\d+)?$ 七、正浮點數:^((0-9)+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)| ([0-9]*[1-9][0-9]*))$ 八、非正浮點數:^((-\d+\.\d+)?)|(0+(\.0+)?))$ 九、負浮點數:^(-((正浮點數正則式)))$ 十、英文字符串:^[A-Za-z]+$ 十一、英文大寫串:^[A-Z]+$ 十二、英文小寫串:^[a-z]+$ 1三、英文字符數字串:^[A-Za-z0-9]+$ 1四、英數字加下劃線串:^\w+$ 1五、E-mail地址:^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$ 1六、URL:^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$ 或:^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^& lt;>\"\"])*$ 1七、郵政編碼:^[1-9]\d{5}$ 1八、中文:^[\u0391-\uFFE5]+$ 1九、電話號碼:^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9] \d{6,7}(\-\d{1,4})?$ 20、手機號碼:^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$ 2一、雙字節字符(包括漢字在內):^\x00-\xff 2二、匹配首尾空格:(^\s*)|(\s*$)(像vbscript那樣的trim函數) 2三、匹配HTML標記:<(.*)>.*<\/\1>|<(.*) \/> 2四、匹配空行:\n[\s| ]*\r 2五、提取信息中的網絡連接:(h|H)(r|R)(e|E)(f|F) *= *('|」)?(\w|\\|\/|\.)+('|」| *|>)? 2六、提取信息中的郵件地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 2七、提取信息中的圖片連接:(s|S)(r|R)(c|C) *= *('|」)?(\w|\\|\/|\.)+('|」| *|>)? 2八、提取信息中的IP地址:(\d+)\.(\d+)\.(\d+)\.(\d+) 2九、提取信息中的中國手機號碼:(86)*0*13\d{9} 30、提取信息中的中國固定電話號碼:(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8} 3一、提取信息中的中國電話號碼(包括移動和固定電話):(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14} 3二、提取信息中的中國郵政編碼:[1-9]{1}(\d+){5} 3三、提取信息中的浮點數(即小數):(-?\d*)\.?\d+ 3四、提取信息中的任何數字 :(-?\d*)(\.\d+)? 3五、IP:(\d+)\.(\d+)\.(\d+)\.(\d+) 3六、電話區號:/^0\d{2,3}$/ 3七、騰訊QQ號:^[1-9]*[1-9][0-9]*$ 3八、賬號(字母開頭,容許5-16字節,容許字母數字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 3九、中文、英文、數字及下劃線:^[\u4e00-\u9fa5_a-zA-Z0-9]+$

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息