正則表達式就是處理字元串的方法,它是以行為單位來進行字元串的處理行為,正則表達式通過一些特殊符號的輔助,可以讓用戶輕易達到查找、刪除、替換某特定字元串的處理程式。正則表達式基本上是一種“表示法”,只要工具支持這種表示法,那麼該工具就可以用來作為正則表達式的字元串處理之用。 ...
正則表達式就是處理字元串的方法,它是以行為單位來進行字元串的處理行為,正則表達式通過一些特殊符號的輔助,可以讓用戶輕易達到查找、刪除、替換某特定字元串的處理程式。正則表達式基本上是一種“表示法”,只要工具支持這種表示法,那麼該工具就可以用來作為正則表達式的字元串處理之用。
正則表達式字元
RE字元 | 意義 |
---|---|
. | 匹配任意單個字元 |
[-] | 匹配括弧里任意一個字元,也可以用-來表示範圍。例如:[abc]或[a-z] |
[^] | 匹配不包括括弧里的字元,例如:匹配非數字[^0-9] |
* | 匹配前一個字元任意次,包括0次 |
\? | 匹配前一個字元0到1次;使用egrep時,可以省略轉義字元\ |
\+ | 匹配前面字元至少1次;使用egrep時,可以省略轉義字元\ |
\{n,m\} | 匹配前一個字元至少n次最多m次;\{n\}匹配n次;\{n,\}匹配至少n次,最多不限;使用egrep時,可以省略轉義字元\ |
^string | 匹配的字元串處於行首 |
string$ | 匹配的字元串處於行尾 |
\<PATTERN或\b | 匹配的字元串位於單詞詞首 |
PATTERN\>或\b | 匹配的字元串位於單詞詞尾 |
\<PATTERN\> | 匹配整個單詞 |
\(PATTERN\) | 匹配括弧里的組字元串,可以用變數\1,\2,\3...引用匹配到的內容;使用egrep時,可以省略轉義字元\ |
範圍欄位表示
字元類 | 含義 |
---|---|
[:alnum:] | 代表英文大小寫字元及數字,即0-9,A-Z,a-z |
[:alpha:] | 代表任何英文大小字元,即A-Z,a-z |
[:lower:] | 代表小寫字元,即a-z |
[:upper:] | 代表大寫字元,即A-Z |
[:digit:] | 代表數字,即0-9 |
[:xdigit:] | 代表十六進位的數字類型,因此包括0-9,A-F,a-f的數字與字元 |
[:blank:] | 代表空格鍵與tab按鍵 |
[:graph:] | 除了空格與tab按鍵之外的其它所有按鍵 |
[:space:] | 任何會產生空白的字元,包括空格鍵,Tab鍵,CR等 |
[:cntrl:] | 代表鍵盤上面的控制按鍵,既包括CR,LF,Tab,Del等 |
[:print:] | 代表任意可列印字元 |
[:punct:] | 代表標點符號,即" ' ? ! ; : # $ |
應用舉例
# 在/etc/passwd中查找用戶名和所用shell同名的行
[root@oldboy68-23 ~]# egrep --color=auto "(^[^:]*\>).*\1$" /etc/passwd
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
- 範例說明:
- (^[^:]*\>)表示匹配不包括:字元的單詞為行首的行
- \1$表示以()中匹配到的內容做為行尾
- .*表示任意字元任意多個