超哥帶你玩轉正則表示式-連載(三)

目錄

(一)一句話弄明白你的疑問

(二)正則表示式啥玩意?

(三)正則表示式的語法(第一招)

1。元字元

2。 重複限定符

3。 分組

4。 轉義

5。 條件或

6。 區間

(四)練練手

(五)正則表示式的函式(第二招)

1。re。compile函式

2。re。findall函式(最常用)

3。re。sub函式(中等)

4。re。search函式(一般)

5。re。match函式(很少)

6。re。match與re。search的區別

7。re。finditer(很少)

8。re。split(很少)

(六)正則表示式語法速查表

超哥帶你玩轉正則表示式-連載(三)

書接上回,上次咱們講到了分組,使用()完成,但是如果我們匹配的內容就有()呢?怎麼解決,就是今天要講的:

4. 轉義

我們看到正則表示式用小括號來做分組,那麼問題來了:

如果要匹配的字串中本身就包含小括號,那是不是衝突?應該怎麼辦?

針對這種情況,正則提供了轉義的方式,也就是要把這些元字元、限定符或者關鍵字轉義成普通的字元,做法很簡答,就是在要轉義的字元前面加個斜槓,也就是\即可。

如:要匹配以(ab)開頭:

^(\(ab\))*

5. 條件或

回到我們剛才的手機號匹配,我們都知道:國內號碼都來自三大網,它們都有屬於自己的號段,比如聯通有130/131/132/155/156/185/186/145/176等號段,假如讓我們匹配一個聯通的號碼,那按照我們目前所學到的正則,應該無從下手的,因為這裡包含了一些並列的條件,也就是“或”,那麼在正則中是如何表示“或”的呢?

正則用符號 | 來表示或,也叫做分支條件,當滿足正則裡的分支條件的任何一種條件時,都會當成是匹配成功。

那麼我們就可以用或條件來處理這個問題

1 ^(130|131|132|155|156|185|186|145|176)\d{8}$

6. 區間

看到上面的例子,是不是看到有什麼規律?是不是還有一種想要簡化的衝動?

實際是有的

正則提供一個元字元中括號 [] 來表示區間條件。

1。限定0到9 可以寫成[0-9]

2。限定A-Z 寫成[A-Z]

3。限定某些數字 [165]

那上面的正則我們還改成這樣:

1 ^((13[0-2])|(15[56])|(18[5-6])|145|176)\d{8}$

好了,正則表示式的基本用法就講到這裡了,其實它還有非常多的知識點以及元字元,我們在此只列舉了部分元字元和語法來講,旨在給那些不懂正則或者想學正則但有看不下去文件的人做一個快速入門級的教程,看完本教程,即使你不能寫出高大上的正則,至少也能寫一些簡單的正則或者看得懂別人寫的正則了。

(四)練練手

1。匹配qq號:

分析:規則,4-11位的數字組成

[1-9]\d{4,11},表示5位到12位qq。第一位為非0

2。匹配11位的電話號碼

分析規則:1開頭,第二位3456789組成,剩下9位數字

1[3-9]\d{9}

3。匹配如下文

wahahabanana

qqxing

這樣的字串中,

1)匹配出wahaha,banana,qqxing內容。

\w{6}或>\w+<< span=“”>

2)匹配出a,b,h1這樣的內容

<\w+>

4。手機號碼驗證前兩位(注:現在有13、14、15、17、18開頭的)

^1[34578]\d{9}$

想要學會正則,只學習正則表示式是不夠的,還需要學習正則表示式函式,這兩個搭配才能讓你幹活遊刃有餘,所以接下來學習第二招,下次更新,還不趕緊關注。

超哥帶你玩轉正則表示式-連載(三)

功能測試想要轉型自動化/測試開發的同學,新增:chenghaokeji666