我们今天来研究一下 正则表达式中的【断言匹配】 看看是个什么东西!!

简介: 很多人不明白【断言匹配】是什么?看完这篇文章你就明白了

🚀 个人主页 极客小俊
✍🏻 作者简介:web开发者、设计师、技术分享博主
🐋 希望大家多多支持一下, 我们一起进步!😄
🏅 如果文章对你有帮助的话,欢迎评论 💬点赞👍🏻 收藏 📂加关注

logo.png

正则中的断言匹配

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

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

案例代码

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

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

案例代码

//断言匹配 案例2  匹配n字符串之前的所有字符串, 但这里会包含n这个字符
$string='33333333aaaaaabbbbbbaidu.com.cn 北京市朝阳区';
$pattern='/.*(?<=baidu)/';
preg_match({
   
   mathJaxContainer[1]}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({
   
   mathJaxContainer[2]}string,$arr);
show($arr);

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

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

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

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

代码如下:

$string='33333333666www.baidu.com.cn 北京市朝阳区';
$pattern='/(?<=666).*(?=\.cn)/is';
preg_match({
   
   mathJaxContainer[4]}string,$arr);
show($arr);

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

代码如下:

$string='@php@python.com@perl.com@';
$pattern='/(?<=@).*?(?=@)/is';
preg_match_all({
   
   mathJaxContainer[5]}string,$arr);
show($arr);

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

代码如下:

$string='@php@python.com@perl.com@asdasdas#java#spring boot#';
$pattern='/(?<=[@#]).*?(?=[@#])/is';
preg_match_all({
   
   mathJaxContainer[6]}string,$arr);
show($arr);

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

相关文章
|
3月前
|
JavaScript 前端开发 Java
|
3月前
|
JavaScript 前端开发 Java
正则表达式深度解析:匹配任意字符串
【4月更文挑战第1天】
1531 0
|
2月前
|
Java
正则表达式匹配数字的几种方法比较
正则表达式匹配数字的几种方法比较
|
3月前
|
JavaScript 前端开发 Java
正则表达式深度解析:匹配制表符
【4月更文挑战第2天】
193 2
正则表达式深度解析:匹配制表符
|
11月前
|
PHP 开发者
你见过这些正则表达式中奇奇怪怪的匹配模式吗 _ 贪婪匹配、懒惰匹配 、禁止贪婪匹配!
一篇文章让你清楚的了解正则表达式中奇奇怪怪的匹配模式-- 贪婪匹配、懒惰匹配 、禁止贪婪匹配!
56 1
你见过这些正则表达式中奇奇怪怪的匹配模式吗 _ 贪婪匹配、懒惰匹配 、禁止贪婪匹配!
|
3月前
|
数据采集 自然语言处理 JavaScript
正则表达式的神奇世界:表达、匹配和提取
正则表达式的神奇世界:表达、匹配和提取
62 0
|
算法 C语言 数据安全/隐私保护
【C++技能树】快速文本匹配 --正则表达式介绍与C++正则表达式使用
假设要判断一个QQ号是否有效,他必须满足以下三个规则
102 0
|
程序员
学好正则表达式,啥难匹配的内容都给我匹配上
学好正则表达式,啥难匹配的内容都给我匹配上
|
前端开发
前端学习案例12-断言&匹配模式1
前端学习案例12-断言&匹配模式1
50 0
前端学习案例12-断言&匹配模式1
|
前端开发
前端学习案例13-断言&匹配模式2
前端学习案例13-断言&匹配模式2
44 0
前端学习案例13-断言&匹配模式2