当前位置: 首页 > news >正文

php正则中的i,m,s,x,e分别表示什么

正则表达式模式修饰符(也称为标志或模式修饰符)用于改变正则表达式的行为。这些修饰符可以附加在正则表达式的定界符之后,通常为正斜杠(/)或井号(#),以改变搜索或替换的方式。

1、i(IGNORECASE):不区分大小写。在匹配时,模式字符串中的字符将被视为不区分大小写。

preg_match('/foo/i', 'FOO'); // 匹配成功

2、m (MULTILINE): 使开始和结束字符(^ 和 $)工作于包含换行的每一行上(通常只影响整行的匹配)。在多行字符串中,每一行都会被视为一个独立的字符串。

preg_match('/^bar/', "foo\nbar\nbaz", $matches, PREG_OFFSET_CAPTURE, 3); // 不匹配,因为没有在第三行开始处找到  
preg_match('/^bar/m', "foo\nbar\nbaz", $matches, PREG_OFFSET_CAPTURE, 3); // 匹配成功,因为在第二行开始处找到了

3、s (DOTALL): 使点号(.)匹配包括换行符在内的所有字符。默认情况下,. 不会匹配换行符。

preg_match('/.+/', "foo\nbar"); // 只匹配 "foo"  
preg_match('/.+/s', "foo\nbar"); // 匹配 "foo\nbar"

4、x(EXTENDED):忽略模式中的空白字符(但不包括在字符类中的字符)。这使得正则表达式更易读和编写。在 x 模式下,你可以使用 # 来添加注释。

preg_match('/foo # 这是一个注释  bar/x', 'foobar'); // 匹配成功

5、e(EVALUATE):这个修饰符在 PHP 5.5.0 中已被弃用,并在 PHP 7.0.0 中被移除。它允许你在匹配之后执行 PHP 代码。出于安全原因,不建议使用此修饰符,因为它可能导致代码注入。

注意: e 修饰符(在 PHP 中称为评估修饰符)在 PHP 5.5.0 之后已被废弃,并且在 PHP 7.0.0 中被移除,因为它可能导致安全问题(执行不受信任的代码)。

相关文章:

  • 大数据信用报告查询有哪些作用?哪个平台更好?
  • Go微服务: Nacos的搭建和基础API的使用
  • 云计算-使用Java访问S3 (Accessing S3 using Java)
  • 爬虫案例-亚马逊反爬流程分析梳理(验证码突破)(x-amz-captcha)
  • C# 集合(三) —— Stack/BitArray类
  • 【C语言回顾】编译和链接
  • 云部署最简单python web
  • 【SpringBoot】SpringBoot中防止接口重复提交(单机环境和分布式环境)
  • sqlites数据库读取,仅适用于数据少的数据库查询【改进版】
  • RedisTemplateAPI:List
  • 经常碰到的20个等待事件
  • Android firebase消息推送集成 FCM消息处理
  • I.MX6ULL Linux C语言开发环境搭建(点灯实验)
  • Python项目:数据可视化_下载数据【笔记】
  • hive初始化失败报错:Error: Duplicate key name ‘PCS_STATS_IDX‘ (state=42000,code=1061)
  • angular学习第一篇-----环境搭建
  • Consul Config 使用Git做版本控制的实现
  •  D - 粉碎叛乱F - 其他起义
  • DOM的那些事
  • ES6系列(二)变量的解构赋值
  • go语言学习初探(一)
  • HTTP--网络协议分层,http历史(二)
  • leetcode388. Longest Absolute File Path
  • markdown编辑器简评
  • PHP面试之三:MySQL数据库
  • swift基础之_对象 实例方法 对象方法。
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • tab.js分享及浏览器兼容性问题汇总
  • 阿里云前端周刊 - 第 26 期
  • 对象引论
  • 聊聊directory traversal attack
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • RDS-Mysql 物理备份恢复到本地数据库上
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • 数据库巡检项
  • ​批处理文件中的errorlevel用法
  • #pragma multi_compile #pragma shader_feature
  • #Ubuntu(修改root信息)
  • (1) caustics\
  • (2)空速传感器
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • ******之网络***——物理***
  • .NET CLR Hosting 简介
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .考试倒计时43天!来提分啦!
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法
  • @FeignClient 调用另一个服务的test环境,实际上却调用了另一个环境testone的接口,这其中牵扯到k8s容器外容器内的问题,注册到eureka上的是容器外的旧版本...
  • @Transient注解
  • [ C++ ] 继承
  • [ 云计算 | AWS 实践 ] Java 如何重命名 Amazon S3 中的文件和文件夹
  • [2019.3.5]BZOJ1934 [Shoi2007]Vote 善意的投票
  • [ACTF2020 新生赛]Upload 1
  • [AI]文心一言爆火的同时,ChatGPT带来了这么多的开源项目你了解吗
  • [BZOJ 1032][JSOI2007]祖码Zuma(区间Dp)