PHP正則表達式考察點
阿新 • • 發佈:2018-08-28
aaa 代碼 回車 pattern ack 則表達式 src filter 使用
正則表達式的作用 分隔、查找、匹配、替換字符串 正則表達式的組成部分 分隔符 "/" 、 "#" 、 "~" 通用原子 \d : 十進制的0-9 \D : 對\d取反:除了0-9 \w : 數字、字母、下畫線 \W : 除了數字、字母、下畫線 \s : 空格、換行符、換頁符、回車符、字表符 \S : 除了空格、換行符、換頁符、回車符、字表符 常用原子符 . : 除了換行符之外的任意字符 * : 匹配前面內容出現0次、1次或多次 ? : 匹配前面內容出現0次或1次 ^ : 開頭 dollar符: 結尾 + : 匹配前面內容出現1次或多次 {n} : 出現n次 {n,} :出現大於等於n次 {n,m} : 出現大於等於n次 小於等於m次 [] : 集合,匹配中括號裏面的[abc]則是匹配a 或 b 或 c () : 後向引用或當作整體 [^] : 取反[^abc]除了a 、除了b、 除了c | : 或者 [-] : 表示範圍 模式修正符 i : 不區分大小寫 m : 多文本模式 s : 單行模式 U : 取消貪婪模式 x : 忽略模式中的空白符 A : 必須以該模式開頭 D: 如果這個修飾符被設置, 模式中的元字符美元符號僅僅匹配目標字符串的末尾. 如果這個修飾符 沒有設置, 當字符串以一個換行符結尾時, 美元符號還會匹配該換行符(但不會匹配之前的任何換行符). 如果設置了修飾符m, 這個修飾符被忽略 u : 進行utf-8匹配 後向引用 $str = ‘<b>abc</b>‘; $pattern = ‘/<b>(.*)<\/b>/‘; preg_replace($pattern,‘\\1‘,$str);//這裏\1代表的就是括號裏匹配上的內容,也就是abc 貪婪模式 $str = ‘<b>abc</b><b>bcd</b>‘;//匹配每一不b標簽 $pattern = ‘/<b>(.*?)<\/b>/‘;//.*存在貪婪模式,會一直匹配到最後,加上問號後 取消貪婪模式,匹配一個之後再進行下一個匹配 preg_replace($pattern,‘\\1‘,$str); //使用以下方法也可以取消貪婪模式 $pattern = ‘/<b>(.*)<\/b>/U‘; 正則表達式PCRE函數 preg_filter — 執行一個正則表達式搜索和替換 preg_grep — 返回匹配模式的數組條目 preg_last_error — 返回最後一個PCRE正則執行產生的錯誤代碼 preg_match_all — 執行一個全局正則表達式匹配 preg_match — 執行匹配正則表達式 preg_quote — 轉義正則表達式字符 preg_replace_callback_array — Perform a regular expression search and replace using callbacks preg_replace_callback — 執行一個正則表達式搜索並且使用一個回調進行替換 preg_replace — 執行一個正則表達式的搜索和替換 preg_split — 通過一個正則表達式分隔字符串 例子 寫出一個正則表達式,取出頁面中所有img標簽中的src值 $str = ‘<img alt="xxx" src="aaa.jpg" />‘; $pattern = ‘/<img.*?src=["\‘].*?["\‘].*?\/?>/‘; /** * 分析 * img的標簽特性:有<img開頭,中間可能有其他屬性:所以有<img.*? * src標簽:src=["\‘].*?["\‘] 可能是以單引號或雙引號 * 後面可能還有別的屬性:.*? * 以/> 或 >結尾: /?> * 最終拼接成:<img.*?src=["\‘].*?["\‘].*?\/?> **/
PHP正則表達式考察點