php preg_match 只匹配第一个字符_PHP正则表达式核心技术完全详解 第12节知识补充 断言匹配
作者:極客小俊
一個專注于web技術的80后
你不用拼過聰明人,你只需要拼過那些懶人 你就一定會超越大部分人!
PHP正則中的斷言匹配
我遇見過很多初學者都不知道什么叫 斷言匹配 ,今天就跟小白解釋一下
概述 斷言匹配也叫定位邊界匹配、 含義就是要獲取從某一個字符串的位置開始 或 結尾開始截取 語法: ?<=n : 表示匹配當前從n字符串之后 或者 之前的字符串
小提示: 這里主要是要搞清楚會不會包含n字符串, 如果還不理解那么我們就看下面的案例吧
例1: 匹配n字符串之后的所有字符: 這里就叫 匹配之后 注意:[這里不會包含當前n的字符] 案例代碼如下:
?//斷言匹配 案例1 匹配n字符串之后的所有字符串, 但這里不會包含n這個字符?$string='33333333aaaaaabbbbbbaidu.com.cn 北京市朝陽區';?$pattern='/(?<=baidu).*/';?preg_match($pattern,$string,$arr);?show($arr);例2: 匹配n字符串之前的所有字符, 這里就叫: 之前匹配 注意:[這里會包含當前n字符] 案例代碼如下:
?//斷言匹配 案例2 匹配n字符串之前的所有字符串, 但這里會包含n這個字符?$string='33333333aaaaaabbbbbbaidu.com.cn 北京市朝陽區';?$pattern='/.*(?<=baidu)/';?preg_match($pattern,$string,$arr);?show($arr);我想大家看了案例以后應該清楚什么叫之前 之后 的匹配了吧!! 如果不清楚就把代碼粘貼,運行起來,跑一下,打印出結果就會知道含義了!
在w3school api文檔的JS分類里RegExp篇章中量詞里面 大家會找到一個叫: ?=n 的東西 , 這個也是斷言匹配的一種形式, ?=n 表示匹配包含當前從n字符串之后 或者 之前的字符串
例3: 之后的匹配 注意:[這里會包含當前n的字符, 這里跟例1恰好相反 ] 其實 仔細觀察的同學一定會發現 核心區別就是少一個小于符號 : < 就會造成不同的效果
? //斷言匹配 案例3 匹配n字符串之后的所有字符串, 這里會包含n這個字符?$string='33333333aaaaaabbbbbbaidu.com.cn 北京市朝陽區';?$pattern='/(?=baidu).*/';?preg_match($pattern,$string,$arr);?show($arr);例4: 之前的匹配 注意:[這里不會包含當前n的字符 , 這里也恰好跟例2 相反 ] 就不多說了直接看代碼吧!
?//斷言匹配 案例4 匹配n字符串之前的所有字符串, 這里不包含n這個字符?$string='33333333aaaaaabbbbbbaidu.com.cn 北京市朝陽區';?$pattern='/.*(?=baidu)/is';?preg_match($pattern,$string,$arr);?show($arr);現在明白我一開始就說: 要是要搞清楚會不會包含n字符串 的原因了吧!!
那么現在搞清楚了什么是斷言匹配之后, 我們繼續來看幾個綜合小例子吧 斷言匹配綜合小應用 例1 : 抽取字符串的其中某一段字符! 代碼如下:
?$string='33333333666www.baidu.com.cn 北京市朝陽區';?$pattern='/(?<=666).*(?=.cn)/is';?preg_match($pattern,$string,$arr);?show($arr);斷言匹配綜合小應用 例2: 抽取@中間的字符 代碼如下:
?$string='@php@python.com@perl.com@';?$pattern='/(?<=@).*?(?=@)/is';?preg_match_all($pattern,$string,$arr);?show($arr);斷言匹配綜合小應用 例3: 抽取@中間的字符 升級版 代碼如下:
?$string='@php@python.com@perl.com@asdasdas#java#spring boot#';?$pattern='/(?<=[@#]).*?(?=[@#])/is';?preg_match_all($pattern,$string,$arr);?show($arr);以上的案例差不多 就是我在工作當中 遇見過的. 斷言匹配 暫時就說到這里,以后會繼續更新!!
極客小俊@今日頭條,首發原創文章
如果喜歡話請 "點贊 評論 收藏" 一鍵三連
大家的支持就是我堅持下去的動力!
總結
以上是生活随笔為你收集整理的php preg_match 只匹配第一个字符_PHP正则表达式核心技术完全详解 第12节知识补充 断言匹配的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小说版权问题
- 下一篇: 求一个沉默的微信网名