您的位置 首页 php

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正则表达式核心技术完全详解 第12节知识补充 断言匹配

文章地址:https://www.zhihuclub.com/148932.shtml

关于作者: 智云科技

热门文章

网站地图