linux之正規表示式

2022-06-30 14:03:16 字數 3728 閱讀 8971

1、定義

正規表示式是使用一種模式去匹配一類字串的公式;

2、元字元

rot@123

ratgood

godgooood

gdgood

1djsdh

_test1212

020-7266452

010 6765276

0987-8726531

13687652890

78731

dhsdsjhd

hello world good

teast good

good morning

1)點號.

匹配除換行符外的任意乙個字元

#匹配rot、rat所在的行

cat regtext.sh|grep

'r.t

'

執行結果:

rot

rat2)星號*

匹配*號前乙個字元0次或多次

#匹配god、good等字元所在的行

cat regtext.sh|grep

'go*d

'

執行結果:

good

godgooood

gdhello world good

teast good

3)\

匹配前乙個字元出現n-m次,m為空表示前乙個字元出現≥n

#匹配god,o出現大於2次所在的行

cat regtext.sh|grep

'go\d

'

執行結果:

good

gooood

hello world good

teast good

4)^符號

匹配以該字串開頭的字串

#匹配以good開頭所在的行

cat regtext.sh|grep

'^good

'

執行結果:

good

good morning

cat regtext.sh|grep -i '

^good

'

執行結果:

good

good

good morning

#匹配非good開頭所在的行

cat regtext.sh|grep -v '

^good

'

執行結果:

rotrat

god...(省略)

#匹配以good開頭的行數

cat regtext|grep -c '

^good

'

執行結果:

5)$符號

匹配以該字串結尾所在的行

#匹配以good結尾所在的行

cat regtext.sh|grep

'good$

'

執行結果:

good

hello world good

teast good

6)雙括號

匹配括號內的任意字元出現的行;

#手機號碼匹配,以1開頭,[0-9

]數字,11位;

cat regtext.sh|grep

'^1[0-9]\

'

執行結果:

7)轉義字元 \

用於轉義特殊的符號,例如.*{}\-空格等;

#匹配座機號碼,區號為3位或四位數字、連線符為空格或-、號碼為7位數字

cat regtext.sh|grep

'[0-9]\[\ \-][0-9]\

'

執行結果:

020-7266452

010 6765276

0987-8726531

8)\d

匹配任意數字,相當於[0-9]

\d是一種perl相容模式,使用這種模式匹配,需要加上-p引數

#匹配以數字開頭所在的行

cat regtext.sh|grep -p '

^\d'

執行結果:

1djsdh

020-7266452

010 6765276

0987-8726531

13687652890

78731

9)\w

匹配任意數字、字母和下劃線,相當於[0-9a-za-z]

\w是一種perl相容模式,使用這種模式匹配,需要加上-p引數

#匹配以數字、字母和下劃線開頭所在的行

cat regtext.sh|grep -p '

^\w'

執行結果:

rotrat

good

godgooood

gdgood

1djsdh

_test1212

020-7266452

010 6765276

0987-8726531

13687652890

...(省略)

10)\w

匹配任意非數字、字母和下劃線,相當於[^0-9a-za-z]

\w是一種perl相容模式,使用這種模式匹配,需要加上-p引數

#匹配以非數字、字母和下劃線開頭所在的行

cat regtext.sh|grep -p '

^\w'

執行結果:

@123

11)\b

匹配單詞的邊界,常用於精確單詞的匹配;相當於\《單詞\>

#精確搜尋good所在的行

cat regtext.sh|grep

'\bgood\b

'cat test.sh |grep'\

'

執行結果:

good

hello world good

teast good

good morning

擴充套件的正規表示式,過濾需要使用egrep

1)?匹配前面乙個字元出現0次或1次,過濾需要使用egrep

#匹配god,o出現0次或1次

cat regtext.sh|egrep

'go?d

'執行結果:

執行結果:

godgd

2)+匹配前乙個字元出現1次或多次,需要使用egrep,相當於\

#匹配god、good等o出現1次或多次所在的行

cat regtext.sh|egrep

'go+d

'cat regtext.sh|grep

'go\d

'

執行結果:

good

godgooood

hello world good

teast good

good morning

3)()小括號

小括號和|符號一起使用,用於匹配可替換的字元,相當於

#匹配rot或rat所在的行

cat regtext.sh|egrep

'r(o|a)t

'cat regtext.sh|grep

'r[oa]t

'

執行結果:

rotrat

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 每行...