Skip to content

grep 與 regular expression

簡介

grep

grep 是unix 預設的程式,是global regular expression print 的縮寫
是 標準文字編輯器 的工具之一

常用使用格式為 grep “regex” file
比如 grep “apple” file.txt

regular expression (regex)

格式化的表達字串的方法
由字母集與特殊字元組成
特殊字元可以幫助表達式簡潔與有效
比如 . 代表任意一個字元

也在使用vim 、 sed 等文字編輯時可以幫上忙 (比如substitute)

常用方法

跳脫字元 \

想要真的匹配特殊字元 (把他們當字元看待,而非所表示的功能)
可以加上 \
比如要匹配 .
就必須用 \.

另外,當匹配認不出以下功能時,也可以試著加跳脫字元看看
比如\?

任意一字元

. 可以表達任一字元
比如 “f.x”
可以表示 fox , fax, fex ,fbx ….

0 or 多個字元

C* 可以表達0個 或多個字元C
比如 “fo*x”
可以表示 fx ,fox,foox,fooox ….

1 or 多個字元

C+ 可以表示表示1個或多個字元C
類似於*,只是會要求至少出現一次

頭尾配對 $ ^

C$ 匹配結尾為C的字串
^C 匹配開頭為C的字串

比如 "”

非空格\S 空格\s

比如 “.*oomer”
會包含the consoomer
但是 “\S*oomer”
則只會匹配consoomer

optional \?

C\? ,則會匹配有C的以及沒有C的
比如 “https\?”
則 http , https 都會被匹配

範圍

[a-b] 對有序列的字串表示從a到b
比如 [0-5] 0~5 [0-9] 所有數字 [a-z] 所有小寫字母 [A-Za-z] 所有字母

整合應用

所有大寫開頭,大寫結尾的字串?

“^[A-Z].*[A-Z]$”

參考資料

Regular Expressions (Regex): All the Basics - luke smith
https://www.youtube.com/watch?v=77I4ZkhuHsQ&t=229s