grep及正則表達式 正則表達式 (REGular EXPression,REGEXP)是對字元串和特殊字元(元字元)操作的一種邏輯公式,使用事先定義好的一些特定字元、及這些特定字元的組合,組成一個“規則字元串”,這個“規則字元串”用來表達對字元串的一種過濾邏輯。通常被用來 檢索、替換 那些符合某個 ...
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:] | 任何空白字元,包括空格([\f\n\r\t\v ]) |
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