正則表達式(Regular Expression)入門


一.正則表達式的使用場景:

上傳文件類型的判斷,電子郵件的判斷,電話號碼的判斷,文本的搜索與替換。

 

二.正則表達式的語法規則:

1.行定位符:

^表示行的開始,$表示行的結尾

^tm

可以匹配  tm equal Tomorrow Moon

不匹配 Tomorrow Moon equal tm 

tm$

可以匹配后者

 

tm

可以匹配任意字符串

 

2.單詞定界符(\b、\B)

上面的定位符,如果匹配的只是tm,html和utmost也能匹配出來,如果只是要找tm這個單詞,使用\b表示查找的是一個完整的單詞

\btm\b

 

 

大寫\B與\b相反,匹配的子串不能是一個完整的單詞,而是其他單詞或子串的一部分

 

3.字符類([])

正則表達式區分大小寫,如果需要忽略的話,可以使用方括號[],一個方括號匹配一個字符,如果

[Tt][Mm]

則可以匹配不區分大小寫的tm

 

 

POSIX風格的預定義字符類
[[:digit:]] //任何數字 [[:alnum:]] //任何字母和數字 [[:alpha:]] //任何字母 [[:blank:]] //任何空白字符 [[:xdigit:]] //任何十六進制的數字,相當於[0-9a-fA-F] [[:punct:]] //任何標點符號 [[:print:]] //所有的可打印字符,包括空白字符 [[:space:]] //空白字符(空格、換行符、換頁符、回車符、水平制表符) [[:graph:]] //所有的可打印字符,不包括空白符 [[:upper:]] //所有大寫字母 [[:lower:]] //所有小寫字母 [[:cntrl:]] //所有控制字符

 PCRE的預定義字符類使用反斜線表示

4.選擇字符(|)

[]只能匹配單個字符,|可以匹配任意長度的字符串,使用[]時候,配合連字符-一起使用,比如[a-d]表a或b或c或d,又如T|tM|m,表以字母T或t開頭,后面跟一個字母M或m。

5.連字符[-]

[a-e]

可以標志字母的范圍,上述表示a到e的字符

 

[a-zA-Z]

標志a到e的所有大小寫

注意:sublime text3編輯器

 

 

 

 

 atom編輯器

 要打開大小寫功能。

6.排除字符([^])

正則表達式提供“^”表示不符合的字符,^一般放在[]中

[^a-v]

表示26字母中不包含a到v的字母

[^1-5]

表示不包含1到5的數字

[^a-zA-Z]

表示開頭不含字母的匹配項

 

7.限定符(?*+{n,m})

限定符的說明和舉例
限定符 說明
* 匹配前面子表達式0次或多次,如
zo*

能匹配"z"以及"zoo",猜測是o匹配零次,z匹配也可以,*等價於{0,}

+

匹配前面的子表達式一次或多次。例如'zo+'能匹配"zo”以及"zoo",

但不能匹配"z"。+等價於{1,}

匹配前面的子表達式零次或一次。例如,
do(es)?

可以匹配do或does中的do,?等價於{0,1}

{n}

n是一個非負整數。匹配確定的n次。例如,

o{2}

匹配確定的n次,如匹配o兩次,可以匹配food中的o,但不能匹配pop中的o

{n,}  至少匹配n次,如
o{2,}

不能匹配pop中的o,可以匹配fooooooooood中的所有o,但不能匹配pop中的o

{n,m}  m和n都是非負整數,其中n<=m,最少匹配n次,最多匹配m次,如
o{1,3}

將匹配foooooood前三個o,

o{0,1}

等價於0?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8.點字符(.)

.字符可以匹配除了換行符意外任意一個字符,要匹配以s開頭t結尾並且中間包含一個字母的單詞,格式如下:

^s.t$

要匹配一個單詞,第一個字母為r,第3個字母為s,最后一個字母為t。

正確的正則表達式為

^r.s.*t$

 

9.轉義字符(\)

就是將" " " ," ' " ,"\" , "?" 變為普通的字符

[0-9]{1,3}(\.[0-9]{1,3}){3} // 匹配127.0.0.1

10.反斜線(\)

\a  警報

\b 退格

\c Escape 即<ESC>

\cx 匹配由x指明的控制字符

\f 匹配一個換頁符

\n 匹配一個換行符

\r 匹配一個回車符

\t 匹配一個制表符

\v 匹配一個垂直制表符 

\xhh 十六進制代碼

\ddd 八進制代碼

\d 任意一個十進制數字

\D 任意一個非十進制數字

\s 匹配任何空白字符,包括空格,制表符,換頁符

\S 匹配任何非空白字符

\w 任何一個單詞字符

\W 任何一個非單詞字符

\b 單詞定界符

\B 單詞邊界之外匹配

\A 匹配字符串起始位置

\Z 匹配字符串的末尾位置或字符串末尾的換行符之前的位置

\z 只匹配字符串的末尾,不考慮任何換行符

\G 從偏移字符的起始位置開始進行匹配,這個偏移地址與傳遞給preg_match()函數的偏移位置相同

11.圓括號字符(())

作用:

改變限定符()

(my|your)body,沒有(),匹配的是my或yourbody

分組,{\.[0-9]{1,3}}{3},分組操作3次

12.反向引用

暫時沒搞懂

 

就這樣

 

2019-12-08 15:32:59


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM