正則表達式是你所定義的模式模板(pattern template), Linux可以利用它來過濾文本。
正則表達式是通過正則表達式引擎實現的。正則表達式引擎是一套底層軟件,復雜解釋正則表達式並使用這些模式進行文本匹配。
在Linux中,有兩種流行的正則表達式引擎。
- POSIX基礎正則表達式(basic regular expression, BRE)引擎
- POSIX擴展正則表達式(extended regular expression)引擎
.*[]^${}\+?|()
點號用來匹配除換行符以外任意單個字符。

用來限定待匹配的具體字符。

尋找組中沒有的字符。只要在字符組的開頭加個脫字符^
.

即使是排除,字符組仍必須匹配一個字符。
可以在單破折線符號在字符組中表示字符區間。只需要指定區間的第一個字符、單破折線以及區間的最後一個字符就行了。


字符後放置星號表示該字符必須在匹配模式的文本中出現0次或多次。

類似星號,不過前面的字符可以出現0次或1次,單僅限於此。

表示前面的字符可以出現1次或多次,但必須出現一次。

為可重復的正則表達式指定一個上限。這通常稱為間隔(interval)。可以用兩種格式來指定區間。
- m: 正則表達式准確出現m次。
- m, n: 正則表達式至少出現m次,至多n次。

|
管道符號允許在檢查數據時,用邏輯OR的方式指定正則表達式引擎要用的兩個或多個模式。如果任何一個模式匹配了數據流文本,文本就通過測試。如果沒有模式匹配,則數據流文本匹配失敗。
可以用圓括號進行分組。當將正則表達式模式分組時,該組會被視為一個標准字符。可以像對普通字符一樣給該組使用特殊字符。

基本格式: username@hostname
username可用字母數字字符以及以下特殊字符
- 點號
- 單破折線
- 加號
- 下劃線
hostname
由一個或多個域名和一個服務器名組成。域名和服務器名只允許字母數字字符和點號、下劃線
從左往右開始構建正則表達式
1. 用戶名可以有多個有效字符。
^([a-zA-Z0-9_\-\.\+]+)@
2. hostname
([a-zA-Z0-9_\-\.])
3. 頂級域名
\.([a-zA-Z]{2,5})
組合起來就是
^([a-zA-Z0-9_\-\.\+]+)@([a-zA-Z0-9_\-\.])\.([a-zA-Z]{2,5})
http://xxx/Linuxjc/1157475.html TechArticle