正規表示式

2021-08-20 16:18:40 字數 3508 閱讀 2735

出來混遲早是要還的,真心不想學這個啊,但是用處又很大,只有默默地撿起來。

1、基礎正規表示式練習

(1)搜尋特定字串——grep -n 'the' regular_express.txt

——反向選擇:grep -vn 'the' regular_express.txt

——取得不論大小寫的 the 這個字串:grep-in 'the' regular_express.txt

(2)利用中括號 來搜尋集合字元——grep -n 't[ae]st' regular_express.txt

——搜尋到有 oo 的字元:grep -n 'oo' regular_express.txt

——不想要 oo 前面有 g:grep -n '[^g]oo' regular_express.txt

——oo 前面不想要有小寫字元: grep -n '[^a-z]oo' regular_express.txt   ===  grep -n '[^[:lower:]]oo' regular_express.txt

——要求字串是數字與英文——[a-za-z0-9]

——取得有數字的那一行:grep -n '[0-9]' regular_express.txt === grep -n '[[:digit:]]' regular_express.txt 

=== grep -n '[0-9][0-9]*' regular_express.txt

[:lower:] 就是 a-z 的意思,那麼 [a-z]當然就是 [[:lower:]]

(3)行首與行尾字元 ^ $

——想要讓 the 只在行首列出——grep -n '^the' regular_express.txt

——想要開頭是小寫字元的那一行就列出——grep -n '^[a-z]' regular_express.txt  === grep -n '^[[:lower:]]' regular_express.txt

——不想要開頭是英文本母——grep -n '^[^a-za-z]' regular_express.txt

^ 符號,在字元集合符號(括號)之內與之外是不同的! 在 內代表『反向選擇』,在 之外則代表定位在行首的意義!

——想要找出行尾結束為小數點 (.) 的那一行——grep -n '\.$' regular_express.txt

因為小數點具有其他意義(底下會介紹),所以必須要使用跳脫字元(\)來加以解除其特殊意義!

所以不加\,grep -n '.$' regular_express.txt 輸出的是每一行的最後乙個字元。

——想要找出『空白行』,該行並沒有輸入任何資料——grep -n '^$' regular_express.txt

(4)任意乙個字元 . 與重複字元 *

萬用字元 * 可以用來代表任意(0 或多個)字元, 但是正規表示法並不是萬用字元,兩者之間是不相同的! 至於正規表示法當中的『 . 』則代表『絕對有乙個任意字元』的意思!這兩個符號在正規表示法的意義如下:

. (小數點):代表『一定有乙個任意字元』的意思;

* (星星號):代表『重複前乙個字元, 0 到無窮多次』的意思,為組合形態

——找出 g??d 的字串—— grep -n 'g..d' regular_express.txt

——列出有 oo, ooo, oooo 等等的資料, 也就是說,至少要有兩個(含) o 以上——grep -n 'ooo*' regular_express.txt

因為 * 代表的是『重複 0 個或多個前面的 re 字元』的意義, 因此,『o*』代表的是:『擁有空字元或乙個 o 以上的字元』, 特別注意,因為允許空字元(就是有沒有字元都可以的意思),因此,『 grep -n 'o*' regular_express.txt 』將會把所有的資料都列印出來螢幕上!『oo*』——第乙個 o 肯定必須要存在,第二個 o 則是可有可無的多個 o , 所以,凡是含有 o, oo, ooo, oooo 等,都可以被列出來~

——想要字串開頭與結尾都是 g,但是兩個 g 之間僅能存在至少乙個 o——grep -n 'goo*g' regular_express.txt

——想要找出 g 開頭與 g 結尾的字串,當中的字元可有可無——grep -n 'g.*g' regular_express.txt  (注意不是g*g)

(5)限定連續 re 字元範圍 {}

限制乙個範圍區間內的重複字元數——{},但因為 的符號在 shell 是有特殊意義的,因此, 我們必須要使用跳脫字元 \ 來讓他失去特殊意義才行。所以就是這樣的:\

——找到兩個 o 的字串——grep -n 'o\' regular_express.txt

——找出 g 後面接 2 到 5 個 o ,然後再接乙個 g 的字串——grep -n 'go\g' regular_express.txt

——想要的是 2 個o 以上的 goooo....g——grep -n 'go\g' regular_express.txt

awk 則比較傾向於一行當中分成數個『字段』來處理。因此,awk 相當的適合處理小型的資料資料處理。

awk '條件型別 1 條件型別 2 ...' filename

awk 主要是處理『每一行的字段內的資料』,而預設的『欄位的分隔符為 "空格鍵" 或 "[tab]鍵" 』!

通常是『同乙個軟體包的不同版本之間,比較配置檔案與原始檔的差異』。

1、diff

diff 就是用在比對兩個檔案之間的差異的,並且是以行為單位來比對的!

diff 通常是用在同一的檔案(或軟體)的新舊版本差異上!

cmp 主要也是在比對兩個檔案,他主要利用『位元組』單位去比對。

將舊的檔案公升級成為新的檔案——『先比較先舊版本的差異,並將差異檔製作成為補丁檔,再由補丁檔更新舊檔案』即可。

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

正規表示式 表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...

Linux正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...