700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > php正则匹配js中变量_PHP正则表达式核心技术完全详解 第12节 [附加知识] 断言匹配...

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

时间:2023-06-23 17:16:27

相关推荐

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

作者:极客小俊一个专注于web技术的80后

我不用拼过聪明人,我只需要拼过那些懒人 我就一定会超越大部分人!

极客小俊@知乎,官方首发原创文章

博客: 极客小俊GeekerJun

PHP正则中的断言匹配

我遇见过很多初学者都不知道什么叫 断言匹配 ,今天就跟小白解释一下概述断言匹配也叫定位边界匹配、 含义就是要取从某一个字符串的位置开始 或 结尾开始截取 语法: ?<=n : 表示匹配当前从n字符串之后 或者 之前的字符串 小提示:这里主要是要搞清楚会不会包含n字符串, 如果还不理解那么我们就看下面的案例吧

例1: 匹配n字符串之后的所有字符: 这里就叫匹配之后注意:[这里不会包含当前n的字符]案例代码如下:

//断言匹配 案例1 匹配n字符串之后的所有字符串, 但这里不会包含n这个字符$string=' 北京市朝阳区';$pattern='/(?<=baidu).*/';preg_match($pattern,$string,$arr);show($arr);

例2: 匹配n字符串之前的所有字符, 这里就叫:之前匹配注意:[这里会包含当前n字符]案例代码如下:

//断言匹配 案例2 匹配n字符串之前的所有字符串, 但这里会包含n这个字符$string=' 北京市朝阳区';$pattern='/.*(?<=baidu)/';preg_match($pattern,$string,$arr);show($arr);

我想大家看了案例以后应该清楚什么叫之前 之后 的匹配了吧!! 如果不清楚就把代码粘贴,运行起来,跑一下,打印出结果就会知道含义了!

在w3school api文档的JS分类里RegExp篇章中量词里面 大家会找到一个叫: ?=n 的东西 , 这个也是断言匹配的一种形式,?=n表示匹配包含当前从n字符串之后 或者 之前的字符串

例3: 之后的匹配 注意:[这里会包含当前n的字符, 这里跟例1恰好相反 ] 其实 仔细观察的同学一定会发现 核心区别就是少一个小于符号 :<就会造成不同的效果

//断言匹配 案例3 匹配n字符串之后的所有字符串, 这里会包含n这个字符$string=' 北京市朝阳区';$pattern='/(?=baidu).*/';preg_match($pattern,$string,$arr);show($arr);

例4: 之前的匹配 注意:[这里不会包含当前n的字符 , 这里也恰好跟例2 相反 ] 就不多说了直接看代码吧!

//断言匹配 案例4 匹配n字符串之前的所有字符串, 这里不包含n这个字符$string=' 北京市朝阳区';$pattern='/.*(?=baidu)/is';preg_match($pattern,$string,$arr);show($arr);

现在明白我一开始就说:要是要搞清楚会不会包含n字符串的原因了吧!!

那么现在搞清楚了什么是断言匹配之后, 我们继续来看几个综合小例子吧 断言匹配综合小应用 例1 : 抽取字符串的其中某一段字符! 代码如下:

$string=' 北京市朝阳区';$pattern='/(?<=666).*(?=.cn)/is';preg_match($pattern,$string,$arr);show($arr);

断言匹配综合小应用 例2: 抽取@中间的字符 代码如下:

$string='@php@@@';$pattern='/(?<=@).*?(?=@)/is';preg_match_all($pattern,$string,$arr);show($arr);

断言匹配综合小应用 例3: 抽取@中间的字符 升级版 代码如下:

$string='@php@@@asdasdas#java#spring boot#';$pattern='/(?<=[@#]).*?(?=[@#])/is';preg_match_all($pattern,$string,$arr);show($arr);

以上的案例差不多 就是我在工作当中 遇见过的. 断言匹配 暂时就说到这里,以后会继续更新!!

如果对你有帮助、如果你喜欢我的内容,请“点赞”“评论” “收藏”一键三连哦!

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

前端html+css+javascript技术讨论交流群: 281499395

后端php+mysql+Linux技术交流群: 855256321

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。