正則表達式三句話
a.找什麼
b.從哪找
c.找幾個
①如果正則表達式不和函數一起使用,就純粹是一個字符串,只有和函數一起使用才發揮他真實的威力
②語法:
例:”/\<img\s*src=\”.*?\”\/\>/iu”
A.定界符號/ /(上例中的符號)
B.weixin接口 在哪
除了字母、數字和正斜槓\以外的任何字符都可以爲定界符號
沒有特殊需要我們都是用正斜線爲正則表達式的定界符號
C.原子img \s
注意:原子是正則表達式的最基本的組成單位,而且必須至少要包含一個原子
只要一個正則表達式可以獨立使用的字符,就是原子
1.所有打印(所有可以在屏幕上輸出的字符串)和非打印字符(看不到的)
2..*+?(<>如果所有有意義的字符,想作爲原子使用,通通使用“\”轉義字符轉義 “\”轉義字符可以將有意義的字符轉成沒意義的字符,還可以將沒意義的字符轉成有意義的字符
3.在正則表達式中可以直接使用一些代表範圍的原子
\d 表示一個任意的十進制數字
\D 表示任意一個除數字之外的字符
\s 表示任意一個空白字符
\S 表示任意一個非空白字符
\w 表示任意一個字 a-z A-Z0-9
\W 表示任意一個非字 a-z A-Z0-9
4.自定義一個原子表[],可以匹配括號中的任何一個原子
[^]表示取反的意思,例如[^a-z]表示除a-z以外的數
D.元字符 * ?
元字符是一種特殊的字符,是用來修飾原子用的,不可以單獨出現
* 表示其前的字符可以出現0次,1次或多次
+ 表示其前的字符可以出現1次或多次
? 表示其前的原子可以出現0次或1次
{} 用於定義前面原子出現的次數,{m} m表示一個整數,{5}表示前面的原子出現5次,{m,n}表示前面出現的原子最少出現m次,最多出現n次,{m,}表示前面的字符最少出現m次
. 默認情況下,表示除換行符外任意一個字符
^ 直接在一個正則表達式的第一個字符出現,則表達必須以這個正則表達式開始
$ 直接在一個正則表達式的最後一個字符出現,則表達必須以這個正則表達式結束
| 表示或的關係,它的優先級號是最低的,最後考慮它的功能
() A.作爲大原子使用
B.還可以改變優先級
C.還可以作爲子模式使用(以括號內的正則表達式所匹配到的結果放入其他數組元素中去)。有的時候你想用作改變優先級卻不想當作子模式來使用,這在(後加?:
D.還可以在模式中把子模式取出來,再作爲正則表達式模式的一部分,遇到替換函數如prag_replace函數中,可以將子模式取出,在被替換的字符串中使用。如果想把子模式取出來可以用 \1 表示把第一個子模式取出來 需要注意的是看清楚是在單引號還是雙引號中使用,如果在雙引號中使用則需要再加一個\錶轉義
\b 表示一個邊界
\B 表示一個非邊界
E.模式修正符號i u
“//模式修正符”
1.就是幾個字母
2.可以一次使用一個,每一個具有一定的意義,也可以連續使用多個
3.是對整個正則表達式調優使用,也可以說是對正則表達式功能的擴展
i 表示在和模式進行匹配時不區分大小寫
m 默認情況,將字符視爲一行 ^ $ 視爲多行後,任何一行都可以以正則開始或結束
s 如果沒有使用這個模式修正符號時,元字符中的“.”默認不能表示換行符號,將字符串視爲單行
x 表示模式中的空白忽略不計
u 正則表達式有個特點---貪婪,這個可以用來取消這個貪婪模式
注意:有的時候匹配到的正則表達式與輸出的不盡相同,那是因爲echo函數會把一部分轉義掉,此時在要輸出的內容兩頭加上<xmp>標籤就可以看到被轉義的字符了
PHP中與perl兼容的正則處理函數