PHP正则表达式基础必须掌握
生活随笔
收集整理的這篇文章主要介紹了
PHP正则表达式基础必须掌握
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
正則表達式
作用:
1,分割
2,匹配
3,查找
4,替換
一個正則表達式至少包含一個原子
正則表達式就是一個字符串
什么時候使用正則?
1,表單匹配
2,URl的重寫,路由重寫
3,小偷采集
如何使用正則表達PHP
PCRE庫正則表達式庫,大多數(shù)語言都在使用,通用
POSIX庫
正則表達式的語法規(guī)則和組成部分
1,定界符
兩個正斜線//,用戶把需要匹配的模式放在定界符之間即可
除了字母,數(shù)字,斜線\之外的任何字符都可以作為定界符
# | !也是可以當做定界符的
2,原子
原子是正則表達式最基本的組成單元
1,普通字符作為原子? ? 如a-z,A-Z 0-9等
2,一些特殊字符和轉義后的元字符作為原子
如,索引的標點符號,但語句特殊意義的符號需要轉義后才能作為原子,
如:\*? \+? \.? 等
3,一些非打印字符作為原子? 如\f \n \r \t? \v? \cx
4,使用通用字符類型作為原子,如 \d \D \w \W \s? \S
作用:
1,分割
2,匹配
3,查找
4,替換
一個正則表達式至少包含一個原子
正則表達式就是一個字符串
什么時候使用正則?
1,表單匹配
2,URl的重寫,路由重寫
3,小偷采集
如何使用正則表達PHP
PCRE庫正則表達式庫,大多數(shù)語言都在使用,通用
POSIX庫
正則表達式的語法規(guī)則和組成部分
1,定界符
兩個正斜線//,用戶把需要匹配的模式放在定界符之間即可
除了字母,數(shù)字,斜線\之外的任何字符都可以作為定界符
# | !也是可以當做定界符的
2,原子
原子是正則表達式最基本的組成單元
1,普通字符作為原子? ? 如a-z,A-Z 0-9等
2,一些特殊字符和轉義后的元字符作為原子
如,索引的標點符號,但語句特殊意義的符號需要轉義后才能作為原子,
如:\*? \+? \.? 等
3,一些非打印字符作為原子? 如\f \n \r \t? \v? \cx
4,使用通用字符類型作為原子,如 \d \D \w \W \s? \S
5, 自定義原子表([])作為原子? 如'/[apj]sp/'? '/[^apj]sp/'
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>正則是匹配</title> </head> <body><form action=""><input type="text" name="zz"><input type="submit" value="正則表達式匹配"></form></body> </html><?php header("Content-type: text/html; charset=utf-8"); // $pattern="/abc/"; // //如果匹配的到返回1,匹配不到返回0 // //=======================原子===================//// $pattern="/abc/"; //普通的原子 // $patten="/\./"; //特殊的原子需要反斜線的轉義 // $pattern="/\n/"; //匹配非打印字符// /*=============6種通用原子開始===============*/// $pattern="/\d/"; //匹配任意一個數(shù)字 // $pattern="/\D/"; //陪陪除了數(shù)字之外的任意字符 // $pattern="/\w/"; //匹配數(shù)字,大小寫字母,下劃線 // $pattern="/\W/"; //匹配除了數(shù)字,字母下劃線的任意字符 // $pattern="/\s/"; //匹配空白字符 // $pattern="/\S/"; //匹配除了空白符以外的任意字符 // /*=============6種通用原子結束===============*/// /*=============15種元字符開始===============*///$pattern="/go*gle/"; //*代表匹配前面的原子0次,1次或者多次 //$pattern="/go+gle/"; //+代表匹配前面的原則至少一次或者多次 //$pattern="/go?gle/"; //?智能匹配前面的原子0次或1次 //$pattern="/./"; //.匹配除了換行符以外的任意一個字符//$pattern="/a|b/"; //或者匹配,匹配a或者b //$pattern="/go{3}gle/"; //{n}匹配n次,可以匹配前面的n次原子,例如gooole可以匹配,如果goooogle是不能匹配的 //$pattern="/go{3,}gle/"; //{n,}可以匹配上面的原子大于n的 //$pattern="/go{1,3}gle/"; //{n,}可以匹配上面的原子大于n的//$pattern="/^我們是好人/"; //^符號必須是從頭開始,否則全文有也是輸出錯誤,不加^的話默認是全文匹配, //$pattern="/我們是好人$/"; //$ 必須以我們是好人結尾 //$pattern="/^我們是好人$/"; //開頭^和$結尾,必須是全部匹配,原子相等 //$pattern="/^我們是.*好人$/"; //開頭^和$結尾,中間可以是任意的字符 //$pattern="/\bis/"; // \b是必須以每個單詞是is開頭 //$pattern="/is\b/"; //必須是以is結尾 //$pattern="/\bis\b/"; //必須是以is開頭和結尾 //$pattern="/\Bis/"; //is必須不能開頭 //$pattern="/is\B/"; //不能以is結尾//$pattern="/[abc]/"; //相當于a或b或c,用戶輸入a或b或c都可以匹配 //$pattern="/[^abc]/"; //除了a,b,c都可以匹配//$pattern="/ab|cd/"; //可以匹配ab或者cd,相當于| //$pattern="/ab|cd:/"; //可以匹配到ab或者cd: //$pattern="/(ab|cd):/"; //可以匹配到ab:或者是cd: ,后向引用或者反向引用//$pattern="/<b>.*</b>/"; //匹配所有的<b>所有的內容</b>,這是貪婪模式 // 貪婪模式,第一個<b>到最后一個</b>的所有內容,包含<b>之間的所有的<b></b></b> //$pattern="/<b>.*?<\/b>/"; //.*?取消貪婪模式,輸出第一個<b></b>標簽之間的內容 // $str="<b>hao</b>are you<b></b>";//$pattern="/[.]/"; //單純的.沒有其他含義 //$pattern="/[.*]/"; //里面的.*等特殊字符會失去原有的意義,只要是帶有.或*的字符串都可以匹配成功//匹配中文 $pattern="/[^x00-xff]/"; // /*=============15種元字符結束===============*/// /*=============模式修正符===============*/ // $pattern="/[a-z]/i";//可以匹配a-z的大小寫都可以 //$pattern="/ab/i";//可以匹配ab的大小寫都可以 //$pattern="/^ab/m"; //可以在每一行開始匹配,是否ab開頭,^是以什么開頭,多行匹配 //類似$str="a\nb";//$pattern="/./s";//.匹配除了換行符以外的任意一個字符,s是修正了.的換行符//$pattern="/a b c/x";// 模式中的空白忽略不計,除非他已經(jīng)轉義,輸入abc是可以匹配成功的,但是a b c匹配不成功 //在正則表達式中最后添加e,e是eval()的縮寫 //$pattern="/<b>.*?<\/b>/u" //U是貪婪模式,備注:.*?+U是取消取消貪婪模式=貪婪模式//$pattern="/abc$/";//默認情況下,是匹配以abc結尾的字符串,但是如果 //$str="dwedwedewabc\n";這樣也是會匹配成功的,因為\n是換行符 //$pattern="/abc$/D"; 加D是更加嚴謹,換行的話直接報錯的 // /*=============模式修正符結束===============*/// /*=============正則式優(yōu)化方面===============*/ //例如: ?:http|https|ftp 這樣的話在生成的數(shù)組會沒有這一項 // 減少內存占用 // //在字符串中運行php代碼: //在正則表達式中最后添加e,e是eval()的縮寫 //例如$pattern="/http:\/\/\w+\.\w+\.(com|cn)/e"; //然后在preg_replace()中更改 //$str=preg_replace($pattern,'\'<a href="$0">\'.strtoupper("$0").\'</a>\'', $str); //上面的示例是將需要替換的值自動變成大寫 // /*=============正則式優(yōu)化方面結束============*//**************preg_match函數(shù)開始*******///preg_match($pattern,$str,$arr);//執(zhí)行一次返回一次匹配結果//需要遍歷出結果 /**************preg_match函數(shù)結束*******//**************preg_match_all函數(shù)開始*******///preg_match_all($pattern,$str,$arr);//返回一個數(shù)組//可以將全部的匹配結果匹配出來//如果這是打印var_dump($arr)會輸出匹配后的數(shù)組//如果這是打印var_dump($arr[0])會輸出匹配后的內容 /**************preg_match_all函數(shù)結束*******//**************preg_replace函數(shù)開始,推薦使用,重要!!*******/ //preg_replace($pattern,'替換內容',$arr); //返回直接替換后字符串 //(反向)后向引用就是將之前查詢出的內容在preg_replace()的第二個函數(shù)直接引用 //因為第二個函數(shù)加載替換內容,可以直接放入$0或者\\0 //$0和\\0是根據(jù)正則式匹配前置出來的內容 //$0和\\0其實是數(shù)組,可以自己打印一下 /**************preg_replace結束******************************///另外的正則函數(shù) //preg_grep //preg_split$str=$_GET['zz']; //測試接收if(preg_match($pattern,$str,$arr)){echo "<font color='green'>恭喜你,匹配成功</font><br/>";echo "<pre>";var_dump($arr);echo "</pre>"; }else{echo "<font color='red'>沒有匹配到</font>";}
總結
以上是生活随笔為你收集整理的PHP正则表达式基础必须掌握的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《java websocket》之 实现
- 下一篇: python爬虫项目(对博思平台社区话题