正则表达式环视断言预查:开头结尾匹配的正确姿势是什么?

正则表达式环视、断言、预查:开头结尾匹配的技巧

本文深入探讨正则表达式中环视(lookaround)、断言和预查的用法,并解释在匹配字符串开头和结尾时,正向否定预查和反向否定预查为何使用方法不同,以及各自的含义。

我们从一个常见问题出发:使用正则表达式排除特定字符串时,为什么正向否定预查 ^(?!baidu).*$ 用于判断不以 “baidu” 开头的字符串,而反向否定预查却不同?

关键在于理解向前预查和向后预查。^(?!baidu).*$ 并非简单地“不以baidu开头”,而是匹配“其后不跟着 baidu 的开头”的空字符串,然后再加上任意字符串和结尾。它关注的是匹配位置之后的内容。

而判断不以 “baidu” 开头,可以直接使用 ^(?!baidu),无需 .*$。 同样,判断不以 “com” 结尾,应该使用 (?。

以下代码示例更清晰地解释向前预查和向后预查的含义和区别

/^(?!baidu)/.test('baidu.com'); // false/^(?!baidu)/.test('www.baidu.com'); // true/^(?

通过这些例子可以看出,正向预查 `(?=...)` 匹配的是当前位置之后满足条件的字符串,而反向预查 `(?<=...)` 匹配的是当前位置之前满足条件的字符串。

正则表达式环视断言预查:开头结尾匹配的正确姿势是什么?

以上就是正则表达式环视断言预查:开头结尾匹配的正确姿势是什么?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1256256.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月10日 03:45:12
下一篇 2025年12月10日 03:45:23

相关推荐

  • PHP中如何定义资源类型变量?

    php中定义资源类型变量通过调用特定函数实现,如fopen或mysql_connect。1. 使用fopen打开文件:$file = fopen(“example.txt”, “r”)。2. 使用mysql_connect连接数据库:$connecti…

    2025年12月10日
    000
  • PHP中如何实现数据校验?

    在php中实现数据校验可以通过内置函数和第三方库来确保应用安全和数据完整性。1) 使用filter_var函数可以校验邮箱、url等数据类型。2) 自定义函数如validateregistration可以校验用户名、密码等多个字段。3) 第三方库如respect/validation提供更灵活的校验…

    2025年12月10日
    000
  • PHP中如何查找子字符串位置?

    在php中查找子字符串位置使用strpos函数。1.strpos返回子字符串的起始位置,若不存在则返回false,使用严格比较检查返回值。2.忽略大小写时使用stripos。3.指定搜索起始位置时使用第三个参数。4.多次查找时可使用正则表达式优化性能。5.查找最后一次出现的位置使用strrpos。 …

    2025年12月10日
    000
  • PHP中单引号和双引号字符串有什么区别?

    php中单引号和双引号字符串的主要区别在于变量解析和转义字符处理:1. 双引号可以解析变量和大多数转义字符;2. 单引号不解析变量,只处理和’,性能较高;3. 选择使用哪种引号应根据具体需求,平衡性能与可读性。 PHP中单引号和双引号字符串的区别其实是个挺有意思的话题。很多人刚开始学PH…

    2025年12月10日
    000
  • PHP中如何操作Markdown文件?

    在php中操作markdown文件可以使用以下步骤:1. 读取markdown文件,使用file_get_contents或fopen和fread。2. 解析markdown内容,使用parsedown库转换为html。3. 生成markdown文件,通过将数据转换为markdown格式并保存。4.…

    2025年12月10日
    000
  • PHP中如何操作MySQL数据库?

    在php中操作mysql数据库主要依赖于mysqli和pdo,其中我推荐使用pdo。1.连接数据库:使用pdo连接mysql数据库,并使用try-catch块处理连接错误。2.插入数据:使用预处理语句和绑定参数来插入数据,防止sql注入。3.查询数据:使用pdo的query方法查询所有用户数据。4.…

    2025年12月10日
    000
  • PHP中如何实现async/await?

    php中无法直接实现async/await,但可以通过reactphp和swoole模拟异步编程效果。1) 使用reactphp,通过eventloop和promise实现异步操作。2) 使用swoole,通过coroutine和go函数实现类似async/await的编程模型。 PHP中如何实现a…

    2025年12月10日
    000
  • PHP中如何验证SSCC字符串?

    在php中验证sscc字符串的方法是使用正则表达式检查格式,并计算校验位进行比较。1) 使用正则表达式验证sscc是否为18位数字。2) 计算前17位数字的校验位,并与最后一位比较。3) 提供错误处理以识别常见错误。4) 通过生成和验证sscc来提高物流管理效率。 在PHP中验证SSCC(Seria…

    2025年12月10日
    000
  • PHP中常量和变量有什么区别?

    常量和变量在php中的主要区别在于:1. 常量的值不可改变,而变量的值可以被重新赋值;2. 常量是全局的,而变量受到作用域限制;3. 常量命名通常使用大写字母和下划线,变量命名则更为灵活;4. 常量的解析速度比变量快,这些区别影响了它们在代码中的使用和性能。 在PHP中,常量和变量虽然都是用来存储数…

    2025年12月10日
    000
  • PHP中如何操作RabbitMQ?

    在php中使用rabbitmq可以通过phpamqplib库实现,步骤如下:1. 安装rabbitmq服务器和phpamqplib库;2. 创建连接和通道,声明队列;3. 编写生产者发送消息和消费者接收消息的代码。使用rabbitmq时需注意消息持久化、重复消费和顺序性问题,并通过日志记录和监控提升…

    2025年12月10日
    000
  • ​Laravel 9适配PHP8.1新特性:枚举类型与只读属性应用

    在 laravel 9 中,可以使用 php 8.1 的枚举类型和只读属性来提升代码质量。1. 枚举类型可用于定义状态字段,提高代码可读性和类型安全性。2. 只读属性可保护敏感数据,确保数据完整性和安全性。 引言 今天我们来聊聊如何在 Laravel 9 中利用 PHP 8.1 的新特性——枚举类型…

    2025年12月10日
    000
  • PHP中数组有哪些类型?

    php中的数组分为三种类型:1.索引数组,适合存储顺序列表或相同类型的数据,使用数字索引;2.关联数组,使用字符串作为键名,适用于配置文件和用户信息等;3.多维数组,用于处理表格数据和嵌套结构。 在PHP中,数组的类型和用法相当丰富且灵活。这不仅仅是一个简单的数据结构,而是一个强大的工具,能够帮助我…

    2025年12月10日
    000
  • PHP中trait冲突如何解决?

    在php中,trait冲突可以通过以下方法解决:1. 使用insteadof关键字明确指定使用哪个trait的方法;2. 使用as关键字重命名冲突的方法;3. 定义新的方法来整合多个trait的方法。这些方法可以灵活地解决trait冲突问题。 在PHP中,trait冲突是一个常见的问题,尤其当你试图…

    2025年12月10日
    000
  • PHP中exit和die有什么区别?

    在php中,exit和die功能完全相同,都是终止脚本并输出消息。1. exit更正式,常用于权限控制,如if (!userhaspermission()) { exit(‘您没有权限访问此页面。’);}。2. die用于错误处理,如if (!file_exists($fil…

    2025年12月10日
    000
  • PHP中整型和浮点型有什么区别?

    整型和浮点型在php中的主要区别体现在数据表示方式、精度和使用场景上。1. 整型用于表示整数,适用于计数和索引,处理速度快,内存占用小。2. 浮点型用于表示小数,适用于需要精确到小数点的计算,但可能出现精度丢失问题。 在PHP中,整型和浮点型的区别主要体现在数据的表示方式、精度和使用场景上。整型用于…

    2025年12月10日
    000
  • PHP中parent关键字怎么用?

    在php中,parent关键字用于在子类中调用父类的方法或属性。1. 在子类方法中调用父类方法,如dog类的makesound()方法中调用animal类的makesound()方法。2. 在子类构造函数中调用父类构造函数,如dog类的构造函数中调用animal类的构造函数。使用时需注意父子类继承关…

    2025年12月10日
    000
  • Ubuntu 21.10编译安装PHP8.1.1:依赖项与参数调优指南

    在ubuntu 21.10上编译安装php 8.1.1的原因是可以进行精细的配置和优化。具体步骤包括:1.安装依赖项,如build-essential和libxml2-dev等;2.下载并解压php源码;3.配置并编译php,使用./configure设置参数,如–prefix和&#82…

    2025年12月10日
    000
  • PHP中如何检查数组键是否存在?

    在php中检查数组键是否存在可以使用isset()和array_key_exists()函数。1. isset()检查键是否存在且值不为null。2. array_key_exists()仅检查键是否存在,不关心值是否为null。选择函数时应根据具体需求,并注意多维数组的正确引用。 在PHP中检查数…

    2025年12月10日
    000
  • PHP中如何实现数组环形缓冲区?

    在php中实现数组环形缓冲区可以通过定义一个类来实现。1. 创建一个circularbuffer类,初始化缓冲区、容量、头指针、尾指针和大小。2. 使用enqueue方法添加新元素,当缓冲区满时覆盖最旧数据。3. 使用dequeue方法移除并返回最旧元素。4. 通过取模运算确保指针循环。5. 注意性…

    2025年12月10日
    000
  • PHP中如何实现发布订阅?

    在php中实现发布订阅模式可以通过类和接口来实现。1)定义observer接口和concreteobserver类表示订阅者。2)subject类作为发布者,管理订阅者列表并通过notify方法通知它们。3)使用attach和detach方法实现订阅和取消订阅。 在PHP中实现发布订阅模式(也称为观…

    2025年12月10日
    000

发表回复

登录后才能评论
关注微信