作者:极客小俊

一个专注于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节知识补充 断言匹配相关推荐

  1. php preg_match 只匹配第一个字符_PHP正则表达式核心技术完全详解 第3节

    PHP 正则表达式核心技术详解 第3节 我们在第2节中学习了有关正则的原子.元字符.原子表.转义字符等重要知识点, 这一节我们来讲一下正则中的量词.断言匹配.逻辑匹配.等重要知识! 1 量词 量词: ...

  2. php正则匹配js中变量_PHP正则表达式核心技术完全详解 第12节 [附加知识] 断言匹配...

    作者:极客小俊 一个专注于web技术的80后 我不用拼过聪明人,我只需要拼过那些懒人 我就一定会超越大部分人! 极客小俊@知乎,官方首发原创文章 博客: 极客小俊GeekerJun PHP正则中的断言 ...

  3. dreamweaver 正则表达式为属性值加上双引号_PHP正则表达式核心技术完全详解 第2节...

    PHP 正则表达式核心技术完全详解 第2节 接上一节内容 1 普通字符作为原子 /5/ 用于匹配字符串中是否有5这个字符出现 /php/ 用于匹配字符串中是否有PHP字符串出现 /  / 匹配空字符串 ...

  4. php 两个单词 正则表达式字符前_PHP正则表达式核心技术完全详解 第3节

    PHP 正则表达式核心技术详解 第3节 我们在第2节中学习了有关正则的原子.元字符.原子表.转义字符等重要知识点, 这一节我们来讲一下正则中的量词.断言匹配.逻辑匹配.等重要知识! 1 量词 量词: ...

  5. php 正则表达式提取出合法的时间_PHP正则表达式核心技术完全详解 第1节

    PHP 正则表达式核心技术 第1节 正则表达式: 就是描述字符串排列模式的一种自定义语法规则.也是用于描述字符串排列 或 匹配模式的一种语法规则. 正则表达式: 就是用于描述字符串排列 或 匹配模式的 ...

  6. php正则匹配js中变量_PHP正则表达式核心技术 第4节 php查找匹配函数使用心得

    作者:极客小俊 一个专注于web技术的80后 你不用拼过聪明人,你只需要拼过那些懒人 你就一定会超越大部分人! php中兼容Perl的正则表达式处理函数 在我们说php系统自带的正则处理函数之前,我们 ...

  7. 高通平台msm8953 Linux DTS(Device Tree Source)设备树详解之二(DTS设备树匹配过程)

    本系列导航: 高通平台8953  Linux DTS(Device Tree Source)设备树详解之一(背景基础知识篇) 高通平台8953 Linux DTS(Device Tree Source ...

  8. PHP中邮箱地址的正则表达式,php邮箱地址正则表达式实现与详解,邮箱地址正则表达式_PHP教程...

    php邮箱地址正则表达式实现与详解,邮箱地址正则表达式 本文章不但要讲述了关于正则达式而且还讲述了关于邮箱正则的构成用法详解,有需要了解的朋友可以参考一下,同时我们也提供了多种不同的邮箱验证实例. 正 ...

  9. 字符函数和字符串函数详解(二)strncpy strncat strncmp strstr strtok(及其模拟实现)

     系列文章目录 字符函数和字符串函数详解(一)strlen strcpy strcat strcmp 字符函数和字符串函数详解(二)strncpy strncat strncmp strstr str ...

最新文章

  1. step by step YAML 复用
  2. zabbix的主动模式和被动模式、添加监控主机、添加自定义模板、处理图形中的乱码、自动发现...
  3. 前端学习(1752):前端调试值之网络请求的监控
  4. java基础将一个int数组转换成一个字符串
  5. matlab绘制球面点,我需要在MATLAB的笛卡尔坐标中绘制球面方程的帮助
  6. 【重点】程序员面试金典——17.13树转链表
  7. ad软件中的插座_STM32采集AD的输入阻抗问题(转)
  8. 大平台时代到来 基金电商寻求突围
  9. 信号与线性系统分析(吴大正,郭宝龙)(2-冲激函数)
  10. 小程序源码:独立后台带分销功能月老办事处交友盲盒-多玩法安装简单
  11. 关于idea,springboot启动最新版ibase4j报Unable to start ServletWebServerApplicationContext due to missing Serv
  12. Andriod 第三方 ROM
  13. 基于matlab分析的商业保险案例
  14. python从云端服务器读数据_云服务器简单实现Python自动运维
  15. C# FTP操作(上传、下载等……)
  16. 一网打尽!!!以太网、局域网、广域网、因特网、互联网与万维网是什么?用来干什么的?它们之间有什么区别?
  17. 买零食 HihoCoder - 1272
  18. idea中使用git创建分支与标签
  19. Vue+SpringBoot实现评论功能
  20. NHibernate学习

热门文章

  1. 站在巨人的肩膀上“思考”问题,重在思考而不是拿来主义
  2. 算法工程师落地_模型的更新升级能力
  3. Win10家庭版如何启用本地组策略
  4. LeetCode简单题之旅行终点站
  5. LeetCode简单题之递增顺序搜索树
  6. VGG16迁移学习实现
  7. Harmony生命周期
  8. TensorRT IRNNv2Layer
  9. 2021年大数据ELK(十五):Elasticsearch SQL简单介绍
  10. xlrd.biffh.XLRDError: Excel xlsx file; not supported