深入淺出理解iOS常用的正則表達式—基礎篇[Foundation]

參考資料:cocoachinazys475481075的文章

 

幾個單詞

 

Regular ['regjʊlə]adj. 定期的;有規律的

Expression[ɪk'spreʃ(ə)n; ek-] n. 表現,表示

Regularexpression正則表達式

 

什麼是正則表達式?

 

 

用一個描述字符串去驗證另一個字符串是否符合描述字符串的特徵。(不嚴謹,可以這麼理解)

 

思考:比如表達式“12+”,描述的意思是一個1和任意個2組成的字符串,那麼'12'’122‘'122'….都符合描述特徵

 

正則表達式用來幹嘛?

 

常用到的幾種方式:

 

1、驗證字符串是否符合指定要求:比如驗證郵箱格式、密碼個數等等

2、查找符合指定要求的字符串,這個比從父串中查找子串方便太多

3、替換,更強大

 

思考:正則的用途無非2種,驗證、字符串的處理(查找、替換、刪除之類)

 

 

正則表達式的基礎知識

 

 

一、單種匹配,匹配一次

 

 

1、普通字符:字母、數字、漢字、下劃線、沒有特殊定義的標點

 

舉例::表達式"c",匹配字符串"adasc",匹配結果:"c",匹配位置:始於4,結束於5

 

2、轉義字符:有特殊意義的字符,採用前面‘\+字母’的方式替換原字符

 

表達式

匹配特徵

\r

回車

\n

換行符

\t

製表符

\\

代表\本身

\^

匹配^本身

\$

匹配$本身

\.

匹配.本身

 

舉例:表達式"\$d",在匹配字符串"sas$d132",匹配結果:"$d",匹配位置:始於3,結束於5

 

 

二、多種匹配,匹配一次

 

1、固定的多種匹配(匹配一次)

 

表達式

匹配特徵

\d

0~9的任意一個

\w

A-Z,a-z,0-9,_中的任意一個

\s

空格、製表符、換頁符的任意一個

.

匹配除了\n外的任意一個

 

舉例:表達式"a.\d",匹配"123ab11d",匹配結果:"ab1",匹配位置:始於3,結束於6

 

2、自定義的多種匹配(匹配一次)

 

使用方括號[],意思是匹配方括號裏面的任意一個字符,[^]那就是匹配方括號裏面字符以外的任意一個字符

 

表達式

匹配特徵

[abc1]

"a""b""c""1"中的任意一個字符

[^abc]

除了"a""b""c"以外的任意一個字符

[a-f]

af之間任意一個字符

[^a-f]

除了af之間以外的任意一個字符

 

舉例:表達式"[^123][456]",匹配"12345678",匹配的結果"45",匹配位置:始於3,結束於5

 

思考:理解[]代表其中任意一個字符,^代表字符以外的任意字符即可

 

三、多種匹配,匹配多次

 

如果想要實現多次匹配,那麼就要告訴描述的表達式你想要匹配幾次,這個東西就是"次數修飾",有一點需要注意的是"次數修飾"放到"被修飾的表達式"後面

 

表達式

匹配特徵

{n}

匹配n次

{m,n}

匹配m~n之間的次數

{m,}

匹配 >=m

匹配 0~1中間的次數

*

匹配 >=0

+

匹配 >=1

 

舉例:表達式"\d?[ab]*",匹配"abc123",匹配結果:"ab"匹配始於0,結束於2

 

思考:次數修飾符放到表達式後面用以表示重複的次數即可

 

四、特殊匹配

 

表達式

意義

^

與字符串開始的地方匹配

$

與字符串結束的地方匹配

\b

匹配一個單詞的邊界,也就是單詞和空格之間的位置(不匹配任何字符,一邊是\w,一邊是非\w

|

前後2個表達式是""的關係

()

1、在被修飾匹配次數的時候,括號代表一個整體

2、去匹配結果的時候,括號內的匹配內容可以被單獨取到

 

舉例1:表達式"\bstart\b",匹配"go,start,end",匹配結果是"start"

 

舉例2:表達式"(go)+",匹配"let's gogo",匹配結果是"go go"

 

舉例3:表達式"$(\d+\.\d*)",匹配"$12.33",匹配結果"$12.33"。單獨獲取括號裏面的內容:"12.33"

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章