正規表示式是對字串操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成乙個「規則字串」,這個「規則字串」用來表達對字串的一種過濾邏輯。規定一些特殊語法表示字元類、數量限定符和位置關係,然後用這些特殊語法和普
通字元一起表示乙個模式,這就是正規表示式(regular expression)。
給定乙個正規表示式和另乙個字串,我們可以達到如下的目的:
1. 給定的字串是否符合正規表示式的過濾邏輯(稱作「匹配」);
2. 可以通過正規表示式,從字串中獲取我們想要的特定部分。萬用字元用來匹配符合條件的檔名,萬用字元是完全匹配。ls、find、cp這些命令不支援正規表示式,所以只能使用shell自己的萬用字元來進行匹配了。
元字元作用
*匹配0個或任意多個字元,也就是可以匹配任何內容
?匹配任意乙個字元
匹配[ ]中任意乙個字元
[-]匹配括號中任意乙個字元,-代表乙個範圍,例如:[a-z]代表匹配乙個小寫字母
[^]邏輯非,表示匹配不是中括號內的乙個字元,例如[^0-9]代表匹配乙個不是數字的字元
[!]邏輯非,表示匹配不是中括號內的乙個字元,例如[!0-9]代表匹配乙個不是數字的字元,同上
正規表示式用來在檔案中匹配符合條件的字串,正則是包含匹配。grep、awk、sed等命令可以支援正規表示式。以下以grep為例對正規表示式進行說明。
-n : 輸出結果開頭顯示匹配的行在原始檔中的行號
-o : 只顯示匹配的內容
-q : 靜默模式,沒有任何輸出。可用$?來判斷執行成功沒有,即有沒有過濾到想要的內容。
-l:如果匹配成功,則只將檔名列印出來,失敗則不列印,通常-rl一起用
-a : 如果匹配成功,則將匹配行及其後n行一起列印出來
-b : 如果匹配成功,則將匹配行及其前n行一起列印出來
-c : 如果匹配成功,則將匹配行及其前後n行一起列印出來
--color:匹配的內容顯示時的著色方式,系統預設是自動(auto)
-c : 如果匹配成功,則將匹配到的行數列印出來
-e :等於egrep,擴充套件的正規表示式
-i :忽略大小寫
-v :取反,不匹配
-w:匹配單詞
grep一般情況下支援基本正規表示式;
可以通過引數-e支援擴充套件正規表示式,grep單獨提供了乙個擴充套件命令叫做egrep用來支援擴充套件正規表示式,其和grep -e等價;
此外,通過grep -p可支援perl語言的正則匹配模式,更能更加靈活和強大;
本文以egrep或grep -e來進行總結,不具體區分基本正規表示式和拓展正規表示式,建議使用egrep或grep -e。
^ 行首
$ 行尾
. 除了換行符以外的任意單個字元
* 前導字元的零個或多個
.* 所有字元
? 匹配前面的字元0次或1次
+ 匹配前面的字元1次或多次
匹配前面的字元m次
匹配前面的字元m到n次
配置前面的字元至少m次
匹配之前的字元最多n次
字元組內的任一字元,[a-z]匹配乙個小寫字母
[^] 對字元組內的每個字元取反(不匹配字元組內的每個字元)
| 匹配"|"左邊的模式或者"|"右邊的模式
()將多個字元視為整體,提高優先順序
11 正規表示式
注意 任何預定義字元沒有加上數量詞之前只能匹配乙個字元。12 matches d d 這裡匹配了兩個 注意 這裡只匹配乙個 匹配 matches 匹配qq號 string qq 123456 string reg 1 9 0 9 boolean b qq.matches req 匹配手機號碼 str...
Linux學習11 正規表示式
正規表示式是一種描述文字字串或模式的方式,這樣程式就可以將該模式與任意文字字串相匹配,提供非常強大的搜尋能力。grep sed awk vim less nginx varnish等 正規表示式是從字元和運算構建的,並通過元字元來擴充,大部分字元都匹配自己,大部分元字元必須使用反斜槓 來轉義。使用正...
Linux初識(八)正規表示式
正規表示式 regular expression,在 中常簡寫為regex regexp或re 是電腦科學的乙個概念。正規表示式使用單個字串來描述 匹配一系列符合某個句法規則的字串。在很多文字編輯器裡,正規表示式通常被用來檢索 替換那些符合某個模式的文字。許多程式語言都支援利用正規表示式進行字串操作...