1.定界符
(1).規(guī)定:定界符不能用a-zA-Z0-9\其它的都可以用。定界符必須成對(duì)出現(xiàn),有開(kāi)始就有結(jié)束。
(2).正確的定界符例子:// $$ %% ^^ @@,注意,不能用()做定界符。
(3).\是轉(zhuǎn)義字符,若在正則表達(dá)式里需匹配符號(hào)/可在該符號(hào)/前面加上\轉(zhuǎn)義一下,例:///,也可把定界符/修改為#,例:#/#。
2.正則匹配函數(shù),例:
preg_match($正則變量名, $字符串, $數(shù)組形式的結(jié)果);
若匹配到了,該函數(shù)會(huì)把結(jié)果放在第三個(gè)參數(shù)里(數(shù)組形式),沒(méi)有匹配到則返回0。
3.原子——所有可見(jiàn)不可見(jiàn)的字符就是原子
(1).特殊標(biāo)識(shí)的原子:
\d為匹配一個(gè)0-9 \D反之;
\w為匹配a-zA-Z0-9_ \W反之;
\s為匹配所有空白字符\n\t\r空格 \S反之
[]為匹配指定范圍的原子,如:[0-5]。
(2).[^字符]為不匹配指定區(qū)間的字符。
4.元字符——實(shí)現(xiàn)匹配多個(gè)字符
| 元字符 | 作用 |
|---|---|
| * | 匹配前一個(gè)原子0次或任意多次 |
| + | 匹配前一個(gè)字符一次或多次 |
| ? | 前面的字符可有可無(wú) |
| . | 匹配除了\n以外的所有字符 |
| | | 或者 |
| ^ | 抑揚(yáng)符 |
| $ | 必須要以$之前的字符結(jié)尾 |
| \b | 詞邊界,前面的字符必須在最前或最后 |
| \B | 非邊界 |
| {m} | 前面的字符有且只能出現(xiàn)m次 |
| {n,m} | 前面的字符可出現(xiàn)n到m次 |
| {m,} | 前面的字符至少出現(xiàn)m次 |
| () | 改變優(yōu)先級(jí)或?qū)⒛硞€(gè)字符串視為一個(gè)整體 |
5.模式匹配符——增強(qiáng)正則的功能
(1).用法:/正則表達(dá)式/模式匹配符
(2).常用的模式匹配符:
| 模式匹配符 | 功能 |
|---|---|
| i | 待匹配的字符串不區(qū)分大小寫(xiě) |
| m | 待匹配的字符串視為多行 |
| s | 將待匹配的字符串視為單行,換行符作為普通字符 |
| x | 將正則表達(dá)式中的空白忽略 |
| A | 強(qiáng)制僅從目標(biāo)字符串的開(kāi)頭開(kāi)始匹配 |
| D | 正則表達(dá)式中的$符僅匹配目標(biāo)字符串的結(jié)尾,防止目標(biāo)字符串的結(jié)尾有回車 |
| U | 匹配最近的字符串,避免了正則的貪婪模式(正則是只要符合的都會(huì)匹配) |
6.常用的正則函數(shù)
| 函數(shù)名 | 功能 |
|---|---|
| preg_filter | 執(zhí)行一個(gè)正則表達(dá)式搜索和替換 |
| preg_grep | 返回匹配模式的數(shù)組條目 |
| preg_match | 執(zhí)行一個(gè)正則表達(dá)式匹配 |
| preg_match_all | 執(zhí)行一個(gè)全局正則表達(dá)式匹配 |
| preg_replace | 執(zhí)行一個(gè)正則表達(dá)式的搜索和替換 |
| preg_replace_callback | 執(zhí)行一個(gè)正則表達(dá)式搜索并使用一個(gè)回調(diào)進(jìn)行替換 |
| preg_replace_callback_array | 傳入數(shù)組,執(zhí)行一個(gè)正則表達(dá)式搜索并使用一個(gè)回調(diào)進(jìn)行替換 |
| preg_split | 通過(guò)一個(gè)正則表達(dá)式分割字符串 |
總的來(lái)說(shuō),正則表達(dá)式(模式匹配)感覺(jué)就是一個(gè)熟能生巧的活,要多練,像匹配郵箱、匹配手機(jī)號(hào)、匹配網(wǎng)址、寫(xiě)一個(gè)采集器都可以。