正則表達式分爲元字符和文字。正則表達式的元字符擁有非常強大的描述能力。
行的起始和結束
- 脫字符號^(代表一行的開始)
- 美元符號$(代表一行的結束)
^cat //匹配以cat開頭的行
cat$ //匹配以cat結尾的行
字符組
- [ ](用來匹配若干字符之一)
- [^ ](用來匹配除若干字符以外的字符之一)
用來匹配若干字符之一,主要這句話的兩個限定詞,"字符"和“之一”。每個中括號只匹配一個字符,被匹配的字符位置是中括號中字符的其中一個。注意:[]還支持匹配範圍,例如[0-9]可以匹配0-9之間的數字,但是注意-不能放在[]開始的位置 ,那樣-會被當做字符來處理。
gr[ea]p //grep或者grap都可以被匹配
匹配任意字符
- .(匹配任意字符)
正則表達式是用來匹配任意字符的符號是英文狀態下的一個點。(在linux下處理文件時,通常會用*來匹配文件名。或者寫sql時,會用select * 用於查詢全部字段,有時也用於而在正則表達式裏,)
03.19.23 //03-19-23或者03/19/23都可以被匹配
多選結構
- | (或)
將不同的子表達式組合成一個總表達式。只要能夠匹配任意一個表達式。子表達式又被稱作多選分支。
//匹配grey或者gray的幾種寫法:
grey|gray
gr(e|a)y
gr[ea]y
//注意:gr[e|a]y這種寫法時,|並沒有作爲“或”的意思,而是作爲了一個可選字符。
單詞分界符
- \< (匹配單詞的開頭,可以理解爲單詞版的^)
- \>(匹配單詞的結束,可以理解爲但此版的$)
單詞分界符用於解決:“期望匹配的單詞包含在另一個單詞中”。注意:<和>並不是元字符,只有他們跟\結合起來時,才具有相應的意義。 <和\>也被叫做“元字符序列”。
\<cat //匹配以cat開頭的單詞
初步總結前面提到的元字符
下面繼續列舉元字符:
量詞(quantifiers)
- ?(可選項,把?放在一個字符後面,表示無論這個字符是否出現都可以被匹配。)
- +(計數,緊鄰元素出現一次或多次)
- *(緊鄰元素出現任意次,也可以不出現)
- {min,max}(計數區間,可以設置重複次數)
colou?r //可以匹配color或者colour
[a-zA-Z]{1,5} //匹配出現1-5個字母
轉義字符
- \
用於解決匹配的字符本身是元字符的情況。
\. //用於匹配字符點。
一些小例子
匹配由字母、數字、下劃線組成的字符串,但是不能以數字開頭[a-zA-Z_][a-zA-Z0-9_]*
匹配雙引號內的字符串"[^"]*"
匹配美元金額\$[0-9]+(\.[0-9]*)?