linux學習筆記(2) 正規表示式

2021-08-08 16:23:03 字數 3662 閱讀 4181

這是乙份linux初學者的讀書筆記,沒什麼深刻的內容,就是寫下來方便自己工作時,或在地鐵上用手機檢視。

內容基本基於《linux shell程式設計從初學到精通》第二版。

基礎「*」符號,用於匹配前面的乙個普通字元0次或多次

hel*o

可以匹配helo,hello,helllo

「.」符號,用於匹配任意乙個字元

...

73.前面的三個.匹配三個字元,最後的乙個.匹配乙個字元

所以xcb73a,238734,4hs73e都可以匹配

同時.還可以匹配空格,所以ui 73e也可以匹配

「\^」符號,用於匹配行首的字元是^後面字元的行

^...x86*

表示匹配行首的三個字元為任意字元,第4~6字元為x86

第7個字元可以重複匹配6

如:866x86666,8

6x86都可以匹配

「$」符號,用於匹配行尾,放在字元之後

micky$ 匹配行尾是micky的行

^$ 匹配空行

^.$ 匹配包含乙個字元的行

「」符號,支援窮舉方法匹配字元集合裡的所有元素,也支援用」-「來表示範圍

[0123456789] 匹配任意數字

[0-9] 匹配任意數字

[a-z] 匹配所有小寫字母

[b-p] 匹配b-p所有小寫字母

[^b-p] 匹配所有不在b-p裡的小寫字母

^[b-p] 匹配所有行首是b-p裡的小寫字母的行

^在裡面表示取反,在外面才是匹配行首

[a-za-z][a-za-z]* 可以匹配任意英文單詞(注意思考)

「\」符號,轉義,用於遮蔽元字元的特殊意義

\. 表示匹配字元.,而不是任意乙個字元
「\<\>」符號,表示精確匹配

\ 

表示精確匹配the這個詞

不匹配them,there等

「\」符號,和*類似,但可以指定重複次數

jo\b 匹配jooob,重複o字元3次

jo\b 匹配joooob,jooob,jooooob,

重複o字元最少3次

jo\b 匹配重複o字元3~6次

[a-z]

\ 匹配5個小寫字母,如house,minus等

正規表示式的擴充套件

「?」符號,用於匹配前面的字元0次或1次,注意與*和.的區別

jo

?b 匹配job或joob

「+」符號,匹配前面的字元最少1次,或多次

jo+b

匹配joob,jooob

不匹配job

「()」和」|」,表示一組可選字符集

re(a|e|o)d 和re[aeo]d一樣

| 也有表示或的意思,可以連線多個正則

通配

注意同樣的字元在通配下的意義和正規表示式裡的意義可能是不一樣的。

"*"表示任意位的字元

"?"表示任意乙個字元

"^"表示取反

ls -l *.txt 列出資料夾下所有以.txt結尾的檔案

ls -l 0?.pem 列出所有0開頭,後面跟1個字元,

且以.pem結尾的檔案,比如00.pem,08.pem

ls -l [a-h]*.txt 以a-h範圍內的字元為開頭,

並以.txt結尾的檔案

ls -l [a-h]*.[^txt]* 匹配a-h範圍內開頭,

且結尾不是.txt的的檔案

注意最後乙個*不能少,否則.後只匹配乙個字元

「{}」表示一組表示式的集合。

ls -l 

表示列出所有滿足[a-h]*.txt或0?.txt的檔案

gerp命令

grep是支援正規表示式的文字搜尋工具。

grep [選項][模式][檔案]

如果模式中含有空格,就要用""把模式包住

grep hello world t.txt是不對的

會把world也當做檔名,正確寫法:

grep "hello world" t.txt

grep支援多檔案查詢:

grep "hello world" file1 file2

grep "hello world" 0?.txt

grep命令的選項:

grep -c hello *

.txt

只輸出每個檔案匹配的行的數量

grep -n hello *

.txt

輸出檔名,行號,內容

grep -v hello *

.txt

輸出不包含模式的所有行

grep -vc hello *

.txt

輸出不包含模式的所有行的數量

grep -i hello *

.txt

不區分大小寫搜尋

grep -l hello *

.txt

只列出符合的檔名,不輸出具體的行內容

grep -ns hello *

.txt

只會輸出滿足要求的檔案內容

沒有滿足模式的不輸出

grep -r hello *

.txt

grep預設只搜尋當前資料夾裡的檔案

-r 選項加上後就會搜尋子資料夾裡的檔案

-w 選項表示匹配整詞

-x 選項表示匹配整行

注意-w後的所有字元都是字元本身的意思

grep -w he*

*.txt只匹配he*,不會匹配hee

grep -q hello *

.txt

只返回0,1,2,不會返回具體內容

0表示搜尋成功

1表示未搜尋到滿足的行

2表示因為錯誤未能執行,比如不存在的檔案

grep和正規表示式使用的一組例子
grep ^"i love you"

*.txt

grep -i ^"i love you"

*.txt 不區分大小寫搜尋

grep -c ^$ t.txt 空白行數量

grep -c ^[^$] t.txt 非空白行數量

grep -ns ^".... "

*.txt

注意...

.後的空格

grep "www\.baidu\.com" *.txt

如果是-符號也要用\轉義

grep "\-

\" *.txt 匹配以5個-開頭的行

grep

-w ^"[a-z]\

" *.txt

grep -we "^"[a-z]\

"|^"[a-z]\

"" *.txt

grep -w ^"[a-z]\" *.txt

Linux正規表示式學習筆記

一,基本元字符集及其含義 只匹配行首位,e.g int 匹配行首是 int的行 只匹配行末,e.g 匹配行末是 的行 乙個單字元後緊跟 匹配0個或者多個該字元,比如 a 可以匹配 空字元 a 或者 aaa 匹配的字元,可以是乙個單字元,也可以是序列。比如 0 9 表示匹配數字 0,1,2,3,4,5...

正規表示式學習2

一 校驗數字的表示式 1 數字 0 9 2 n位的數字 d 3 至少n位的數字 d 4 m n位的數字 d 5 零和非零開頭的數字 0 1 9 0 9 6 非零開頭的最多帶兩位小數的數字 1 9 0 9 0 9 7 帶1 2位小數的正數或負數 d d 8 正數 負數 和小數 d d 9 有兩位小數的...

Django學習筆記 2 正規表示式

django的url 使用了正規表示式。通過新增endpoint到檢視函式的對映關係,瀏覽器訪問 endpoint來獲得對應的檢視函式中的內容。the url function is passed four arguments,two required regex and view,and two ...