亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

淺談PHP的正則表達式

2020-03-22 18:27:15
字體:
來源:轉載
供稿:網友
本篇文章給大家介紹一下PHP的html' target='_blank'>正則表達式,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

思維導圖

點擊下圖,可以看具體內容!

介紹

正則表達式,大家在開發中應該是經常用到,現在很多開發語言都有正則表達式的應用,比如javascript,java,.net,php等等,我今天就把我對正則表達式的理解跟大家嘮嘮,不當之處,請多多指教!

需要知道的術語——下面的術語你知道多少?

Δ 定界符

Δ 字符域

Δ 修飾符

Δ 限定符

Δ 脫字符

Δ 通配符(正向預查,反向預查)

Δ 反向引用

Δ 惰性匹配

Δ 注釋

Δ 零字符寬

定位

我們什么時候使用正則表達式呢?不是所有的字符操作都用正則就好了,php在某些方面用正則反而影響效率。當我們遇到復雜文本數據的解析時候,用正則是比較好的選擇。

優點

正則表達式在處理復雜字符操作的時候,可以提高工作效率,也在一定程度節省你的代碼量。

缺點

我們在使用正則表達式的時候,復雜的正則表達式會加大代碼的復雜度,讓人很難理解。所以我們有的時候需要在正則表達式內部添加注釋。

通用模式

¤ 定界符,通常使用 / 做為定界符開始和結束,也可以使用 # 。

什么時候使用 # 呢?一般是在你的字符串中有很多 / 字符的時候,因為正則的時候這種字符需要轉義,比如uri。

使用 / 定界符的代碼如下.

$regex = /^http:////([/w.]+)//([/w]+)//([/w]+)/.html$/i $str = http://www.youku.com/show_page/id_ABCDEFG.html $matches = array();if(preg_match($regex, $str, $matches)){ var_dump($matches);echo /n 

preg_match中的$matches[0]將包含與整個模式匹配的字符串。

使用 # 定界符的代碼如下.這個時候對 / 就不轉義!

$regex = #^http://([/w.]+)/([/w]+)/([/w]+)/.html$#i $str = http://www.youku.com/show_page/id_ABCDEFG.html $matches = array();if(preg_match($regex, $str, $matches)){ var_dump($matches);echo /n 

¤ 修飾符:用于改變正則表達式的行為。

我們看到的( /^http:////([/w.]+)//([/w]+)//([/w]+)/.html/i )中的最后一個 i 就是修飾符,表示忽略大小寫,還有一個我們經常用到的是 x 表示忽略空格。

貢獻代碼:

$regex = /HELLO/ $str = hello word $matches = array();if(preg_match($regex, $str, $matches)){ echo No i:Valid Successful! , /n if(preg_match($regex. i , $str, $matches)){ echo YES i:Valid Successful! , /n }

¤ 字符域:[/w]用方括號擴起來的部分就是字符域。

¤ 限定符:如[/w]{3,5}或者[/w]*或者[/w]+這些[/w]后面的符號都表示限定符。現介紹具體意義。

{3,5}表示3到5個字符。{3,}超過3個字符,{,5}最多5個,{3}三個字符。

* 表示0到多個

+ 表示1到多個。

¤ 脫字符號

^:

放在字符域(如:[^/w])中表示否定(不包括的意思)——“反向選擇”

放在表達式之前,表示以當前這個字符開始。(/^n/i,表示以n開頭)。

注意,我們經常管 / 叫 跳脫字符 。用于轉義一些特殊符號,如 . , /

通配符(lookarounds):斷言某些字符串中某些字符的存在與否!

lookarounds分兩種:lookaheads(正向預查 ?=)和lookbehinds(反向預查? =)。

格式:

正向預查:(?=) 相對應的 (?!)表示否定意思

反向預查:(? =) 相對應的 (? !)表示否定意思

前后緊跟字符

$regex = /(? =c)d(?=e)/ /* d 前面緊跟c, d 后面緊跟e*/$str = abcdefgk $matches = array();if(preg_match($regex, $str, $matches)){ var_dump($matches);echo /n 

否定意義:

$regex = /(? !c)d(?!e)/ /* d 前面不緊跟c, d 后面不緊跟e*/$str = abcdefgk $matches = array();if(preg_match($regex, $str, $matches)){ var_dump($matches);echo /n 

字符寬度:零

驗證零字符代碼

$regex = /HE(?=L)LO/i $str = HELLO $matches = array();if(preg_match($regex, $str, $matches)){ var_dump($matches);echo /n 

打印不出結果!

$regex = /HE(?=L)LLO/i $str = HELLO $matches = array();if(preg_match($regex, $str, $matches)){ var_dump($matches);echo /n 

能打印出結果!

說明:(?=L)意思是HE后面緊跟一個L字符。但是(?=L)本身不占字符,要與(L)區分,(L)本身占一個字符。

捕獲數據

沒有指明類型而進行的分組,將會被獲取,供以后使用。

指明類型指的是通配符。所以只有圓括號起始位置沒有問號的才能被捕捉。

在同一個表達式內的引用叫做反向引用。

調用格式: /編號(如/1)。

$regex = /^(Chuanshanjia)[/w/s!]+/1$/ $str = Chuanshanjia thank Chuanshanjia $matches = array();if(preg_match($regex, $str, $matches)){ var_dump($matches);echo /n 

避免捕獲數據

格式:(?:pattern)

優點:將使有效反向引用數量保持在最小,代碼更加、清楚。

命名捕獲組

格式:(?P 組名 ) 調用方式 (?P=組名)

$regex = /(?P author chuanshanjia)[/s]Is[/s](?P=author)/i $str = author:chuanshanjia Is chuanshanjia $matches = array();if(preg_match($regex, $str, $matches)){ var_dump($matches);echo /n 

運行結果

惰性匹配(記?。簳M行兩部操作,請看下面的原理部分)

格式:限定符?

原理: ? :如果前面有限定符,會使用最小的數據。如“*”會取0個,而“+”會取1個,如過是{3,5}會取3個。

先看下面的兩個代碼:

代碼1.

 ?php$regex = /heL*/i $str = heLLLLLLLLLLLLLLLL if(preg_match($regex, $str, $matches)){ var_dump($matches);echo /n 

結果1.

代碼2

 ?php$regex = /heL*?/i $str = heLLLLLLLLLLLLLLLL if(preg_match($regex, $str, $matches)){ var_dump($matches);echo /n 

結果2

代碼3,使用“+”

 ?php$regex = /heL+?/i $str = heLLLLLLLLLLLLLLLL if(preg_match($regex, $str, $matches)){ var_dump($matches);echo /n 

結果3

代碼4,使用{3,5}

 ?php$regex = /heL{3,10}?/i $str = heLLLLLLLLLLLLLLLL if(preg_match($regex, $str, $matches)){ var_dump($matches);echo /n 

結果4

正則表達式的注釋

格式:(?# 注釋內容)

用途:主要用于復雜的注釋

貢獻代碼:是一個用于連接MYSQL數據庫的正則表達式

$regex = / ^host=(? !/.)([/d.]+)(?!/.) (?#主機地址) ([/w!@#$%^ *()_+/-]+) (?#用戶名) ([/w!@#$%^ *()_+/-]+) (?#密碼)(?!/|)$/ix $str = host=192.168.10.221|root|123456 $matches = array();if(preg_match($regex, $str, $matches)){ var_dump($matches);echo /n 

特殊字符

特殊字符解釋*0到多次+1到多次還可以寫成{1,}?0或1次.匹配除換行符外的所有單個的字符/w[a-zA-Z0-9_]/s空白字符(空格,換行符,回車符)[/t/n/r]/d[0-9]

案例匯總

1、PHP中文匹配

 ?php$str = PHP編程 if (preg_match( /([0-9a-zA-Z/x{4e00}-/x{9fa5}]+)/u ,$str, $matches)) { var_dump($matches); echo /n }

以上就是本篇文章的全部內容,希望能對大家的學習有所幫助。更多精彩內容大家可以關注php 相關教程欄目?。?!

以上就是淺談PHP的正則表達式的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品天天狠天天看| 亚洲变态欧美另类捆绑| 91av视频在线观看| 欧美激情亚洲国产| 综合136福利视频在线| 国产精品视频资源| 日韩美女免费线视频| 欧美大片免费观看在线观看网站推荐| 亚洲缚视频在线观看| 国产精品欧美日韩| 国产精品大陆在线观看| 久久久在线免费观看| 97久久精品视频| 精品动漫一区二区三区| 亚洲国产成人av在线| 超在线视频97| 欧美午夜宅男影院在线观看| 欧美日韩国产精品一区| 日韩高清av一区二区三区| 国产精品色婷婷视频| 国产精品入口日韩视频大尺度| 国产亚洲精品成人av久久ww| 亚洲欧洲中文天堂| 成人欧美一区二区三区黑人| 亚洲电影免费观看| 69影院欧美专区视频| 欧美在线影院在线视频| 国产精品99久久久久久久久久久久| 亚洲欧美激情一区| 久久久久久这里只有精品| 久久琪琪电影院| 琪琪第一精品导航| 久久人人爽人人爽人人片av高请| 亚洲一区精品电影| 久久精品欧美视频| 欧美日韩加勒比精品一区| 91九色视频导航| 日韩电影免费观看在线观看| 免费不卡在线观看av| 法国裸体一区二区| 在线一区二区日韩| 国产精品自拍小视频| 欧美裸体xxxxx| 欧美日韩在线第一页| 日韩电影中文字幕一区| 亚洲视频在线观看免费| 欧美日韩在线视频首页| 亚洲精选在线观看| 亚洲精品第一页| 欧美国产日本在线| 成人激情综合网| 日韩精品高清视频| 一本大道久久加勒比香蕉| 精品国产一区二区三区久久久| 欧美在线视频在线播放完整版免费观看| 一区二区三区无码高清视频| 欧美精品电影免费在线观看| 热久久免费视频精品| 国产日韩欧美在线观看| 日韩欧美高清在线视频| 亚洲欧洲在线观看| 亚洲国产私拍精品国模在线观看| 日韩欧美亚洲范冰冰与中字| 欧美一级淫片videoshd| 欧美乱妇高清无乱码| 亚洲free性xxxx护士hd| 亚洲国产日韩欧美在线图片| 米奇精品一区二区三区在线观看| 秋霞午夜一区二区| 国产精品老牛影院在线观看| 日本免费久久高清视频| 性欧美在线看片a免费观看| 97精品国产91久久久久久| 久久综合伊人77777尤物| 精品亚洲va在线va天堂资源站| 欧美电影在线播放| 欧美日韩在线看| 一本色道久久88精品综合| 日韩欧美在线看| 一区二区三区www| 久久久97精品| 最新国产精品亚洲| 欧美高清视频在线播放| 欧美性极品xxxx娇小| 日韩欧美aaa| 日韩一区二区欧美| 欧美日韩亚洲一区二区三区| 欧美日韩国产中文精品字幕自在自线| 国产精品免费观看在线| 久久久精品久久久| 国产91精品高潮白浆喷水| 日韩av成人在线观看| 91精品国产综合久久久久久久久| 97久久国产精品| 国产精品99蜜臀久久不卡二区| 久久精品美女视频网站| 欧美诱惑福利视频| 成人在线免费观看视视频| 日韩天堂在线视频| www.欧美三级电影.com| 精品在线欧美视频| 欧美成年人在线观看| 黑人巨大精品欧美一区二区一视频| 日韩视频中文字幕| 亚洲综合在线小说| 日韩成人黄色av| 国产精品a久久久久久| 日本中文字幕久久看| 欧美亚洲在线观看| 欧美成人精品一区二区三区| 97成人在线视频| 亚洲xxx自由成熟| 欧美精品久久久久久久久| 国产网站欧美日韩免费精品在线观看| 亚洲欧美另类自拍| 国产精品一区二区在线| 久久视频在线直播| 久久免费国产精品1| 国产欧美一区二区三区久久人妖| 亚洲福利视频网站| 久久亚洲综合国产精品99麻豆精品福利| 国产精品观看在线亚洲人成网| 欧美国产日韩一区二区| 欧美一级淫片videoshd| 夜夜嗨av色综合久久久综合网| 亚洲成人性视频| 亚洲欧美国产一区二区三区| 91国语精品自产拍在线观看性色| 国产精品久久久久久五月尺| 亚洲丝袜在线视频| 精品高清一区二区三区| 国产免费久久av| 国产精品jvid在线观看蜜臀| 岛国av一区二区三区| 欧美精品性视频| 亚洲毛茸茸少妇高潮呻吟| 欧美激情一级精品国产| 国产精品爽爽爽爽爽爽在线观看| 亚洲裸体xxxx| 久久久精品国产网站| 中国日韩欧美久久久久久久久| 国产成人综合av| 国产精品视频xxxx| 91麻豆国产语对白在线观看| 亚洲乱码国产乱码精品精天堂| 亚洲a级在线播放观看| 九九精品在线观看| 久久精品国产v日韩v亚洲| 日韩av在线网址| 国产精品尤物福利片在线观看| 69久久夜色精品国产7777| 亚洲大胆人体av| 国产精品免费电影| 色综合久久88色综合天天看泰| 久久精品国产一区二区三区| 欧美日韩成人在线观看| 91久久综合亚洲鲁鲁五月天| 综合激情国产一区| 最近的2019中文字幕免费一页| 国产亚洲精品一区二555| 亚洲一区久久久| 日韩电影免费观看中文字幕| 亚洲福利视频免费观看| 欧美黑人巨大精品一区二区|