正規表示式

2021-08-02 02:29:29 字數 2128 閱讀 2115

寫這個的目的是想說明一下,元字元與萬用字元,雖然都是使用特定的字元進行匹配。但是這是兩個東西。原字元與萬用字元之間沒有任何聯絡。不要在使用時元字元與萬用字元產生混淆。

元字元是正規表示式使用的特定匹配字元 。萬用字元是系統在匹配檔案時使用的字元 。

元字元的作用是進行文字檔案內容匹配的。而萬用字元是進行檔名稱匹配的。

可以使用 man7 glob 來查詢萬用字元 關鍵字 。

*:匹配多個字元 可以是0個即0到無限大(當然這是不可能的,linux 對檔名有長度要求)

?:匹配單個字元

[4-790]:4-7 90 中的某乙個數字,該表示法只能匹配乙個字元,匹配的字元必須是中括號中給出的字元,可以使用- 表示範圍,如4-7表示的就是 4 5 6 7 這幾個字元 

[^]排除 :排除括號中的字元,也就是說,該表示方法也只能匹配乙個字元,匹配的字元必須不是括號中的內容,例:[^hello] ,非hello的任意字元。

注:下面代表的是乙個集合須使用中括號,例:[[:digit:]]

[:digit:]   任意的數字,相當於0-9

[:lower:]        任意的小寫字母

[:upper:]       任意的大寫字母

[:alpha:] 任意的大小寫字母

[:alnum:] 任意的大小寫字母及數字

[:blank:]任意水平的空白字元

[:space:]  任意的水平的或垂直的空白字元

[:punct:]  任意的標點符號

[:print:]   任意的可列印字元

[:cntrl:]   任意的控制字元

[:graph:]  任意的圖形字元

[:xdigit:] 任意的十六進製制字元

萬用字元到此結束

正規表示式的匹配物件是檔案內容。即文字 。正規表示式的使用還需要支援正規表示式的工具,如grep,sed等。

匹配時會首先匹配整個字串,當整個字串不匹配時,整個字串去掉乙個字元,然後再次進行匹配。所以貪婪模式會匹配到最大的匹配數量

匹配時,首先從目標的起始位置開始匹配,每次檢查乙個字元。

正規表示式又分為兩類 :基本的正規表示式,與擴充套件的正規表示式。

. 匹配單一的任意字元,換行符除外。

匹配中括號中的字元的任意字元一次  

[helo]即匹配 h,e,l,o中的其中乙個

[^helo]取反,即取helo的補集.即不是h,e,l,o中的任意的乙個字元一次

[:digit:] 任意數字

[:lower:]       任意的小寫字母

[:upper:]  任意的大寫字母

[:alpha:]  任意的大小寫字母

[:alnum:] 任意的字母及數字

[:blank:]  任意的水平空白字元

[:space:]  任意的水平空白字元或任意的垂直空白字元

[:punct:]  任意的標點符號

[:print:]   任意的可列印字元

[:cntrl:]   任意的控制字元

[:graph:]  任意的圖形字元

[:xdigit:] 任意的十六進製制字元

*            匹配前面出現的字元任意次,包括0次

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

\+           匹配前面出現的字元1次以上,包括1次

\       匹配前面出現的字元n次,且只能為n次.

\      匹配前面出現的字元n次以上, 包括n次

\    匹配前面出現的字元 2 - 5 次,閉區間.

\      匹配前面出現的字元n次以上.

^                   行首錨定

$                   行尾錨定

^$空行         ^[[:space:]]*$ 顯示非空的空白行

\《或 \b        詞首錨定

\>或 \b        詞尾錨定

分組\(\) 將括號中的字元當成乙個整體

\(ro\)\

匹配ro出現最少2次

後向引用,與分組配合使用使用\1;\2表示之前括號中匹配到的內容.即字串而非模式.\1,\2表示的順序是(出現的順序,\1\,2表示的內容是(與之對應的)中匹配的內容.

匹配|左邊的模式或匹配右邊的模式

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

非負整數 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正規表示式 編寫正規表示式

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