Linux基礎之正規表示式

2021-10-08 10:48:38 字數 2323 閱讀 8396

正規表示式

1.簡介

概念:由一類特殊字元及文字字元所編寫的模式,其中有些字元不表示其字面意義,而是用於表示控制或通配的功能。

分類:基本正規表示式和擴充套件正規表示式。

正規表示式在linux中很常見,日常使用的一些命令(如grep,sed,awk)也會用到正規表示式(命令輸出中包含正規表示式)。

下面使用grep命令來說明正規表示式的應用。

2.正規表示式中字元

分為普通文字字元和元字元。

普通字元:例如a,b,1這些字元,只存在字面上的含義,沒有隱含意義。

元字元:在正規表示式有著特別意義的字元。

3.基本正規表示式元字元(分四類)

(1)字元匹配.

匹配任意單個字元

[^]匹配指定範圍外的單個字元

匹配指定範圍內的任意單個字元

[:space:]

空白字元(空格)

[:digit:]

數字[:lower:]

小寫字母

[:upper:]

大寫字母

[:alpha:]

所有字母

[:alnum:]

數字和字母

[:punct:]

所有標點符號

例項

[root@admin anli]# cat z4

woshirootjingangtui

tashiroottietougong

①:[root@admin anli]# grep 「r[[:alpha:]][[:alpha:]]t」 z4 #匹配檔案z4中r和t之間有兩個字母(不區分大小寫)的字串

②:[root@admin anli]# grep 「r[^ [:alpha:]][^ [:alpha:]]t」 z4 #匹配r和t之間不是字母的字串

(2)匹配次數*

匹配其前面的字元任意次

.*匹配任意長度的任意字元

\ ?匹配前面的字元0次或1次

\ +匹配前面的字元至少一次

\ 匹配前面的字元m次

\ 匹配前面的字元至少m次,至多n次

\ 匹配前面字元至多n次

\ 匹配前面至少m次

例項

(3)位置錨定(注意區分詞首/尾和行首/尾)^

行首錨定

$行尾錨定

^pattern

用於模式匹配整行

^$空白行

^ [[:space:]]*$

空行或包含空白字元的行

-單詞-

-非特殊字元組成的連續字元(字串)-

\ 《或\b

詞首錨定,用於單詞模式的左側

\ >或\b

詞尾錨定,用於單詞模式的右側

\ 匹配完整單詞

例項

(4)分組及引用

\ ( \ )

將乙個或多個字元**在一起,當作乙個整體進行處理

\ (xy\ )*ab

格式(命令列中括號有特殊意義所以用轉義符\把它轉譯為普通字元)

note

分組括號中的模式匹配到的內容會被正規表示式引擎自動記錄於內部的變數中(即使括號內內容與\1變數內容相同),這些變數為:\1;\2…

\1模式從左側起,第乙個左括號以及與之匹配的右括號之間的模式所匹配到的字元

\2模式從左側起,第二個左括號以及與之匹配的右括號之間的模式所匹配到的字元……

例項

4.區分正規表示式和萬用字元

(1)萬用字元可以說只有*,?,,[^]這四種;而正規表示式則比較複雜。

(2)*在萬用字元中表示匹配任意長度的任意字元;而在正規表示式中表示匹配其前面的乙個字元任意次。

(3)萬用字元一般只用於匹配檔名(常用命令為ls,cp…);而正規表示式則大多用於匹配檔案內容裡的符合規則的字串(常用命令為grep,awk,sed…)。

Linux之正規表示式

正規表示式用來在檔案中匹配符合條件的字串,正則是包含匹配。grep awk,sed等命令可以運動正規表示式。正規表示式匹配得到的結果是行 萬用字元用來匹配符合條件的檔名,萬用字元是完全匹配。ls.find.cp這些命令不支援正規表示式,所以只能用shell自己的萬用字元來進行匹配了。例 grep a...

linux之正規表示式

正規表示式,又稱正規表示式 正規表示法 正規表示式 規則表示式 常規表示法 英語 regular expression,在 中常簡寫為 regex regexp 或 re 電腦科學的乙個概念。正規表示式使用單個字串來描述 匹配一系列符合某個句法規則的字串。在很多文字編輯器裡,正規表示式通常被用來檢索...

Linux之正規表示式

字元含義 字串開始 配字串結尾 匹配0個或多個的前乙個字元。注意shell中的 是萬用字元,可以匹配任意字元。與正規表示式中的有差異。匹配任意單字元 示例1 句點匹配 句點匹配單個字元 匹配許可權 x.x.x 前4個字元之後為xc xc.示例2 行首匹配 匹配目錄 d匹配行首為001的 001 每行...