最新公告
  • 欢迎您光临网站无忧模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • PHP正则表达式核心技术完全详解 第12节 [附加知识] 断言匹配

    正文概述 掘金(极客小俊GeekerJun)   2020-11-22   459

    PHP正则表达式核心技术完全详解 第12节  [附加知识] 断言匹配

    PHP正则表达式核心技术完全详解 第12节  [附加知识] 断言匹配

    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节  [附加知识] 断言匹配

    PHP正则表达式核心技术完全详解 第12节  [附加知识] 断言匹配

    如果喜欢我的文章请 ?“点赞” “评论” “关注” ?一键三连、 大家的支持就是我坚持下去的动力!

    如果以上内容有任何错误或者不准确的地方,欢迎在下面 ? 留个言指出、或者你有更好的想法,欢迎一起交流学习


    下载网 » PHP正则表达式核心技术完全详解 第12节 [附加知识] 断言匹配

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元