基礎正則表達式字符匯整
RE字符 | 意義 |
---|---|
^word | 以word開頭,grep '^word' regular_expression.txt
|
word$ | 以word結尾,grep 'word$' regular_expression.txt
|
. | 一定有一個任意字符.grep 'e.e' regular_expression.txt
|
\ | 跳脫字符 |
* | 重復任意個前面的RE字符.grep 'ess*' regular_expression.txt
|
[list] | 能且只能匹配list中的一個 字符,grep 'g[ld]' regular_expression.txt
|
[n1-n2] | 匹配n1到n2這個字符序列.grep [A-Z] regular_expression.txt
|
[^list] | 反向選擇,匹配不包含list中任意一個字符的行.grep [^A-Z] regular_expression.txt
|
{n,m} | 前一個RE字符重復n-m次.grep 'go\{2,3\}g' regular_expression.txt
|
延伸型正則表達式
去除注釋行和空行
egrep -v '^$|^#' regular_expression.txt
如果使用基礎正則表達式
//去除空行和注釋行其中起關鍵作用的是雙引號中的`|`,在這里它表示`or`.
grep -v '^$' regular_expression.txt | grep -v '^#' regular_expression.txt
注意,!
和>
在正則表達式中并不是特殊字符.
特殊符號 | 代表意義 |
---|---|
[:alnum:] | 代表任何大小寫字符及數字,0-9,a-z,A-Z |
[:alpha:] | 代表任何英文大小寫字符,a-z,A-Z |
[:blank:] | 代表[Space]鍵和[Tab]鍵兩者(即空白字符) |
[:cntrl:] | 代表鍵盤上的控制按鍵,包括CR,LF,Tab,Del... |
[:digit:] | 代表數字,0-9 |
[:graph:] | 除了空白字符外的其它的所有按鍵 |
[:lower:] | 代表小寫字符,a-z |
[:print:] | 任何能被打印出的字符 |
[:punct:] | 標點符號 |
[:upper:] | 大寫字符,A-Z |
[:space:] | 任何會產生空白的字符,[Space],[Tab],CR |
[:xdigit:] | 16進制的數字類型,0-9,A-F,a-f |
- 正則表達式就是處理字串的方法,他是以行為單位來進行字串的處理行為;
- 正表達式通過一些特殊符號的輔助,可以讓使用者輕易的達到“搜尋/刪除/取代”某特定
字串的處理程序; - 只要工具程序支持正則表達式,那么該工具程序就可以用來作為正則表達式的字串處理
之用; - 正則表達式與萬用字符是完全不一樣的東西!萬用字符 (wildcard) 代表的是 bash 操
作接口的一個功能, 但正則表達式則是一種字串處理的表示方式! - 使用 grep 或其他工具進行正則表達式的字串比對時,因為編碼的問題會有不同的狀態,
因此, 你最好將 LANG 等變量設置為C或者是en等英文語系! - grep與egrep在正則表達式里面是很常見的兩個程序,其中,egrep支持更嚴謹的正則
表達式的語法; - 由于編碼系統的不同,不同的語系 (LANG) 會造成正則表達式擷取數據的差異。因此
可利用特殊符號如 [:upper:] 來替代編碼范圍較佳; - 由于嚴謹度的不同,正則表達式之上還有更嚴謹的延伸正則表達式;
- 基礎正則表達式的特殊字符有: *, ., [], [-], , ^, $ 等!
- 常見的支持正則表達式的工具軟件有: grep , sed, vim 等等