首頁 > 軟體

關於 grep及正規表示式

2020-06-16 16:49:59

grep及正規表示式

正規表示式(REGular EXPression,REGEXP)是對字串和特殊字元(元字元)操作的一種邏輯公式,使用事先定義好的一些特定字元、及這些特定字元的組合,組成一個“規則字串”,這個“規則字串”用來表達對字串的一種過濾邏輯。通常被用來檢索、替換那些符合某個模式的文字。

正規表示式又分為基本正規表示式(Basic REGEXP)和擴充套件正規表示式(Extended REGEXP)。

常見的用途就是用來比對垃圾郵件。

萬用字元

列舉一些萬用字元,跟正規表示式不通。

  • *:任意長度的任意字元
  • ?:任意單個字元
  • []:括號內的單個字元

    • [abcd]:可以是a,b,c,d中任何一個,但必須有
    • [0-9]:可以是0到9的任何一個數位,但必須有
  • [^]:非括號內字元的單個字元

正規表示式POSIX字元類

特殊符號代表意義
[:alnum:] 0-9,a-z,A-Z
[:alpha:] a-z,A-Z
[:digit:] 0-9
[:xdigit:] 任何十六進位制數位
[:lower:] a-z
[:upper:] A-Z
[:cntrl:] ASCII控制字元(ASCII 0~31 和 ASCII 127)
[:print:] 任何可列印字元
[:punct:] 標點符號
[:blank:] 空格或製表符([t ])
[:graph:] 除空白字元外的其他字元
[:space:] 任何空白字元,包括空格([fnrtv ])

grep

grep [OPTIONS] PATTERN [FILE...]

  • -i 忽略字元大小寫的差別
  • -v:顯示沒有被模式匹配到的行
  • -o:只顯示被模式匹配到的字串
  • -E:使用擴充套件正規表示式 egrep
  • -A<顯示行數> 或 --after-context=<顯示行數> : 除了顯示符合範本樣式的那一列之外,並顯示該行之後的內容。
  • -B<顯示行數> 或 --before-context=<顯示行數> : 除了顯示符合樣式的那一行之外,並顯示該行之前的內容。
  • -C<顯示行數> 或 --context=<顯示行數>或-<顯示行數> : 除了顯示符合樣式的那一行之外,並顯示該行之前後的內容。

正則

元字元

貪婪模式
.:匹配任意單個字元
*:匹配其前面的字元任意次
.*:匹配任意長度的任意字元
?:匹配其前面的字元1次或0次
{m,n}:匹配其前面的字元至少m次

位置錨定
^:錨定行首,此字元後面的任意內容必須出現在行首
$:錨定行尾,此字元前面的任意內容必須出現在行尾
^$:空白行

<或b:錨定詞首,其後面的任意字元必須作為單詞首部出現
>或b:錨定詞尾,其前面的任意字元必須作為單詞尾部出現

分組:()
後向參照
1:參照第一個左括號以及與之對應的右括號所包括的所有內容

或者
|:or

Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx

本文永久更新連結地址https://www.linuxidc.com/Linux/2018-07/153192.htm


IT145.com E-mail:sddin#qq.com