正則表達式語法

正則表達式簡單語法總結(jié)

一、什么是正則表達式

從概念上來說,正則表達式也是一門小巧而精煉的語言,它可以用來簡化檢索特定的字符串,替換特定字符等功能,有許多開發(fā)語言工具,都內(nèi)嵌支持正則表達式。那么一個正則表達式,究竟是什么?其實它就是一個字符串,但這個字符串具有特定含義。

二、正則表達式的基礎(chǔ)語法

1、字面值

所謂字面值,就是沒有任何轉(zhuǎn)義,查找的對象就是其本身,比如正則表達式 abc ,查找的結(jié)果就是返回要查找字符串中 a,b,c三個字母連在一起的字符串。又如,123 就是查找到123這個子串。

2、特殊字符(元字符)

(1)句號

“.”在正則表達式中表示匹配任意字符,很相似于通配符*。如果我們查找a.b這個正則表達式,我們可以找到所有開頭和結(jié)尾為a,b,中間是任意字符的字符串,比如abc,adc,a2c等。

(2)字符類([])

如果你在一個正則表達式中看到有一些字符被[]括號括起來,那么他們的含義將不再是簡單的字面值,他們表示某一個被括號中屬性約束的字符。比如[123456],這個正則表達式表示找到1-6中的任意一個字符,又比如a[bd]c,這表示查找abc或者adc。

注意:

1.在字符類中字符的順序和重復(fù)性都不是我們關(guān)心的。[123]和[2233111],含義是一模一樣的。

2.句號在字符類中表示的就是其本身,[.]就是查找一個句號。

(3)區(qū)間符號(-)

如果我們需要查找一個數(shù)字,[0123456789],這樣做是可以達到目的的,但這寫起非常麻煩,并不符合正則表達式小巧的特性,這時我們可以使用區(qū)間符號來簡化,[0-9]和上面的式子意義完全一樣。同樣,我們可以[a-zA-Z],表示任意一個字母。

注意:

1.區(qū)間的范圍應(yīng)該有意義,[a-1]這樣的區(qū)間并無任何意義,盡管它在語法上可能沒有錯誤。

2.區(qū)間左右兩端對應(yīng)的是字符,并不是數(shù)字,比如[2-41],這個式子的含義是找到2-4的一個數(shù)字或者1,和[1-4]是一樣的。

(4)取反符號(^)

“^”在正則表達式中表示取反,這個很好理解,[^a],表示找到除了a之外的任意字符。[^0-9],表示找到一個非數(shù)字的字符。

注意:

1.^必須在中括號內(nèi),及字符類屬性中使用。

2.^是將后面的整體作為取反條件的。

(5)簡化的字符類

某些符號具有和字符類相同的含義:

\d和[0-9]相同

\w和[0-9A-Za-z_]相同 表示數(shù)字,字母或者下劃線

\s表示匹配空格,tab和換行等不可見符。

與此相對的\D,\W,\S,則表示上述條件的取反情況。

(6)乘法集({})

乘法集的最大用處也是簡化正則表達式,用大括號表示。比如,a{2},表示找到aa這個字符串。

注意:

乘法集是已前面整體為乘法條件的,比如[ab]{2},不是簡單的比配aa,bb,而是和[ab][ab]含義是相同的,會匹配ab,ba,aa,bb。

(7)乘法集中的區(qū)間(,)

乘法集和字符類相同,也可以用區(qū)間進行簡化,但是符號不相同。a{1,3},表示找到a,aa,aaa這三個字符串。a{0,1}是合法的,表示找到空字符,或者a。

注意:

1.乘法集的"越長越好"屬性:乘法集具有這樣的特點,比如a{2,4},如果我搜索myaaaa,它不會找到aa后就停止,而是會找到aaaa。

2.乘法集的"全部獲取"屬性:比如a{2.4},如果搜索myaayouaaaa,它會找到aa和aaaa。

3.乘法集支持開區(qū)間,a{1,}是合法的,表示找到任何a相連的字符串。

(8)判斷符號(?)

這個符號的含義和{0,1}完全相同,123?4,表示匹配1234或者124;

(9)統(tǒng)配符號(*)

這個符號的含義和{0,}相同,比如.* 表示通配一切字符串。

(10)+符號

這個符號和{1,}相同。

(11)或符號(|)

“|”符號表示或的關(guān)系,比如abc|edf,表示找到abc或者def

(12)組合(())

小括號在正則表達式中表示組合,比如(a|b|c)d,表示找到ad,bd,cd,可以將小括號的作用理解為優(yōu)先級。

(13)單詞邊界(\b)

\b表示單詞的邊界,比如\b[a-z]{3}\b,表示匹配一個三個字母的小寫單詞。

(14)行邊界(^ $)

單單的一個^符號表示的是行的開頭,$表示行的結(jié)束。

注意:

[^]是非法的,[$]表示匹配一個$符號。

三、做些小總結(jié)

上面說了這么多正則表達式的語法規(guī)則,我們現(xiàn)在來做下總結(jié):

1、幾個概念:

1、字面值:直接查找的字符,比如123,avb。

2、字符類:描述字符的一些屬性,比如[123],[a-z],\d,\w,\s,.。

3、乘法集:簡化表達式,比如{0,3},?,+,*。

4、或和組合:比如(a|b|v)。

5、單詞,行的邊界\b ^ $

2、元字符列表

. \ [ ] { }? ? * + | ( ) ^ $

3、字符類中元字符列表

[ ] \ - ^

四、一個特別重要的字符

最后,還有一個特別特別重要的字符我們沒考慮到,如果我們要查找元字符怎么辦,在正則表達式中還有一個轉(zhuǎn)義字符"\",如果我們要查找. 只要查找\. 同理\[\]是查找"[]"這個字符串。如果要查找"\",再加一個轉(zhuǎn)義字符就好:\\。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容