php正則表示式及涉及函式
元字元 | 描述 | 示例 |
---|---|---|
. | 匹配任意單個字元。 | 正則表示式 a.c 可以匹配 aac,a2c,a#c 等 |
$ | 匹配字串的結尾。 | 正則表示式 abc$ 可以匹配最後以 abc 結尾的字串 |
^ | 匹配字串的開始。 | 正則表示式 ^what 可以匹配以 what 開始的字串 |
* | 匹配 * 前面的子串零次或多次 | 正則表示式 abc*d 可以匹配 abcd、aad、bd、bcd、d等字串 |
+ | 匹配 * 前面的子串一次或多次 | 正則表示式 abc*d 可以匹配 abcd、aad、bd、bcd等字串 |
{i} | 匹配指定個數的字元 | 正則表示式 [0-9]{11} 可以匹配由11個數字字元組成的字串 |
{i1,2} | 匹配個數在i1到i2範圍的字元 | 正則表示式 [0-9]{8,11} |
\ | 轉義符,將字串中的元字元當作普通的字元匹配 | 正則表示式 \*a 匹配 *a |
[ ] | 匹配[]中的任何一個字元 | 正則表示式 [ab]c 可以匹配 ac、bc |
[c1-c2] | 在[]中使用連字元‘-’指定字元的區間 | 正則表示式 [0-9] 可以匹配任何數字字元 |
[^c1-c2] | 匹配除了[]中的任意字元 | 正則表示式 [^0-9] 匹配除了數字字元之外的任意字元 |
( ) | 用於定義匹配的子模式 | |
| | 從多個選項中選擇一個進行匹配 | 正則表示式 (a|b|c) 可以匹配 a、b、c |
----------------------------------------------------------------------------------------------------------------------------------|選擇分支(或),注意使用”[]“與”|”的區別,在於”[]“只能匹配單個字元,而”|“可以匹配任意長度的字串,
判斷字串”I am a good boy“中是否包含單詞go,可以使用\bgo\b,確保匹配的是一個完整的單詞而不是單詞的一部分。在字串”I am a good boy“中沒有單詞go,使用\bgo\b就會提示匹配不到,而不使用\b就會匹配到”I am a good boy“。還有與之對應的\B意思相反。
在php正則表示式中,通過\n,來表示第n次匹配到的結果。如\5代表第五次匹配到的結果。
----------------------------------------------------------------------------------------------------------------------------------
不使用正則匹配的strstr函式
strstr() 函式搜尋字串在另一字串中的第一次出現。
註釋:該函式是二進位制安全的。
註釋:該函式對大小寫敏感。如需進行不區分大小寫的搜尋,請使用 stristr() 函式。
註釋:返回值是從搜尋到的字串到最後
不使用正則匹配的strpos函式
strpos() 函式查詢字串在另一字串中第一次出現的位置。
註釋:strpos() 函式對大小寫敏感。(stripos不區分大小寫,strrpos~最後一次~區分大小寫,strripos不區分大小寫)
註釋:該函式是二進位制安全的。
使用正則匹配的preg_math()和preg_match_all函式
preg_match() 第一次匹配成功後就會停止匹配,所以返回值為0或1。如果要實現全部結果的匹配,即搜尋到結尾處,則需使用 preg_match_all() 函式。
preg_match("/php/", "php php php php php.", $matches);
print_r($matches);
preg_match_all("/php/", "php php php php php.", $matches);
print_r($matches);
對應的輸出
Array
(
[0] => php
)
Array
(
[0] => Array
(
[0] => php
[1] => php
[2] => php
[3] => php
[4] => php
)
)
php中貪婪匹配與惰性匹配
- 貪婪匹配:匹配儘可能多的字元。
比如,正則表示式中m.*n,它將匹配最長以m開始,n結尾的字串。如果用它來搜尋manmpndegenc的話,它將匹配到的字串是manmpndegen而非man。可以這樣想,當匹配到m的時候,它將從後面往前匹配字元n。 - 懶惰匹配:匹配儘可能少的字元。
在後面新增一個”?”可將貪婪匹配轉變成懶惰匹配。如m.*?n匹配到的字串是man。
----------------------------------------------------------------------------------------------------------------------------------
最後我要吐槽一下php正則表示式對於我這種笨笨的初學者來說真的好難,讀一遍頭都大,而且一臉懵逼