PHP正则匹配所有字符失败问题

Arduino应用——PWM控制直流电机风扇 Arduino应用——PWM控制直流电机风扇PWM原理实验器件功能描述如何改变文本的样式插入链接与图片实现代码生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 最近在使用arduino UNO开发板完成课程小作业。其中一个要求设计一个电风扇控制系统,要求能够通过PWM调节风扇的转速。期间搜索了许多例程和方法,但受限于器件,效果不 阅读详情
<?php

$str = '
@@@@i ( PCRE_CASELESS)
如果设置了这个修饰符,模式中的字母会进行大小写不敏感匹配。@@@@
m ( PCRE_MULTILINE)';

// 正则1:$preg = '/@@@@(.*)@@@@/'; 无法匹配换行符\n
// 正则2:
$preg = '/@@@@(.*)@@@@/s';

// \s   匹配任意一个空白符,等价于[\f\n\r\t\v]
// \S   匹配除空白符以外任何字符,等价于[^\f\n\r\t\v]


preg_match_all( $preg, $str, $matches);

print_r($matches);

// 结果1:
Array
(
    [0] => Array()
    [1] => Array()
)
// 结果2:
Array
(
    [0] => Array
        (
            [0] => @@@@i ( PCRE_CASELESS)
如果设置了这个修饰符,模式中的字母会进行大小写不敏感匹配。@@@@
        )
    [1] => Array
        (
            [0] => i ( PCRE_CASELESS)
如果设置了这个修饰符,模式中的字母会进行大小写不敏感匹配。
        )

)
PHP正则表达式修饰符:
  • i:如果设置了这个修饰符, 模式中的字母会进行大小写不敏感匹配.
  • m:默认情况下, PCRE认为目标字符串是由单行字符组成的(然而实际上它可能会包含多行), “行首”元字符(^)仅匹配字符串的开始位置, 而”行末”元字符()仅匹配字符串末尾,或者最后的换行符(除非设置了D修饰符).这个行为和perl相同.当这个修饰符设置之后,"行首"和"行末"就会匹配目标字符串中任意换行符之前或之后,另外,还分别匹配目标字符串的最开始和最末尾位置.这等同于perl的/m修饰符.如果目标字符串中没有"\n"字符,或者模式中没有出现或)仅匹配字符串末尾,或者最后的换行符(除非设置了D修饰符).这个行为和perl相同.当这个修饰符设置之后,"行首"和"行末"就会匹配目标字符串中任意换行符之前或之后,另外,还分别匹配目标字符串的最开始和最末尾位置.这等同于perl的/m修饰符.如果目标字符串中没有"\n"字符,或者模式中没有出现或, 设置这个修饰符不产生任何影响.
  • s:如果设置了这个修饰符, 模式中的点号元字符匹配所有字符, 包含换行符. 如果没有这个 修饰符, 点号不匹配换行符. 这个修饰符等同于perl中的/s修饰符.一个取反字符类比如 [^a]总是匹配换行符, 而不依赖于这个修饰符的设置.
  • x:如果设置了这个修饰符, 模式中的没有经过转义的或不在字符类中的空白数据字符总会被忽略, 并且位于一个未转义的字符类外部的#字符和下一个换行符之间的字符也被忽略. 这个修饰符 等同于perl中的/x修饰符, 使被编译模式中可以包含注释. 注意: 这仅用于数据字符. 空白字符 还是不能在模式的特殊字符序列中出现, 比如序列(?(引入了一个条件子组(译注: 这种语法定义的 特殊字符序列中如果出现空白字符会导致编译错误. 比如( ?(就会导致错误.).

  • e :如果这个修饰符设置了, preg_replace()在进行了对替换字符串的 后向引用替换之后, 将替换后的字符串作为php代码评估执行(eval函数方式), 并使用执行结果 作为实际参与替换的字符串. 单引号, 双引号, 反斜线()和NULL字符在后向引用替换时会被用反斜线转义.

    Tip
    请确保replacement参数由合法php代码字符串组成, 否则php将会 在preg_replace()调用的行上 产生一个解释错误.
    Note: 仅 preg_replace()使用此修饰符, 其他PCRE函数忽略此修饰符.
    
  • A:如果设置了这个修饰符, 模式被强制为”锚定”模式, 也就是说约束匹配使其仅从 目标字符串的开始位置搜索. 这个效果同样可以使用适当的模式构造出来,并且 这也是perl种实现这种模式的唯一途径.

  • D:如果这个修饰符被设置, 模式中的元字符美元符号仅仅匹配目标字符串的末尾. 如果这个修饰符 没有设置, 当字符串以一个换行符结尾时, 美元符号还会匹配该换行符(但不会匹配之前的任何换行符). 如果设置了修饰符m, 这个修饰符被忽略. 在perl中没有与此修饰符等同的修饰符.

  • S:当一个模式需要多次使用的时候, 为了得到匹配速度的提升, 值得花费一些时间 对其进行一些额外的分析. 如果设置了这个修饰符, 这个额外的分析就会执行. 当前, 这种对一个模式的分析仅仅适用于非锚定模式的匹配(即没有单独的固定开始字符).

  • U :这个修饰符逆转了量词的”贪婪”模式. 使量词默认为非贪婪的, 通过量词后紧跟?的方式可以使其成为贪婪的. 这和perl是不兼容的. 它同样可以使用 模式内修饰符设置(?U)进行设置, 或者在量词后以问号标记其非贪婪(比如.*?).

    Note:
    
    在非贪婪模式, 通常不能匹配超过 pcre.backtrack_limit的字符.
    
  • X :这个修饰符打开了PCRE与perl不兼容的附件功能. 模式中的任意反斜线后就ingen一个 没有特殊含义的字符都会导致一个错误, 以此保留这些字符以保证向后兼容性. 默认 情况下, 在perl中, 反斜线紧跟一个没有特殊含义的字符被认为是该字符的原文. 当前没有其他特性由这个修饰符控制.

  • J:内部选项设置(?J)修改本地的PCRE_DUPNAMES选项. 允许子组重名. (译注:只能通过内部选项设置, 外部的/J设置会产生错误.)

  • u:此修正符打开一个与perl不兼容的附加功能. 模式字符串被认为是utf-8的. 这个修饰符 从unix版php 4.1.0或更高, win32版php 4.2.3开始可用. php 4.3.5开始检查模式的utf-8合法性.

企业数字化转型的 4A 架构指南:从概念解读到 TOGAF 阶段对应 4A企业架构是中国数字化转型实践中总结的简化框架,包含业务、应用、数据和技术四个架构层。它自上而下形成业务驱动应用的指导关系,自下而上构建技术支撑数据的实现路径,与国际标准TOGAF核心内容高度对应。该模型通过统一语言、战略对齐和系统梳理,有效连接业务需求与IT实施,已成为企业架构规划的实用工具。其分层结构清晰展示了从业务目标到技术落地的完整推导链,特别适合中国企业的数字化转型场景。 阅读详情

相关推荐

3D高斯溅射融合Gabor滤波器:频率感知如何提升神经渲染效率与质量

在计算机视觉与图形学领域,3D场景重建旨在从多视角图像中恢复真实世界的三维结构与外观。其核心原理是通过优化场景表示,使渲染出的二维图像与输入照片尽可能一致。传统方法在效率与细节保真度间常面临权衡,高频细节(如精细纹理、锐利边缘)的重建尤为消耗算力。频率感知技术为此提供了突破方向,它借鉴信号处理思想,将场景分解为不同空间频率的成分进行针对性建模。Gabor滤波器作为经典的频率-方向分析工具,能有效刻画纹理的局部频域特征。将Gabor的频率选择性与3D高斯溅射(3DGS)这一高效显式表示结合,构成了神经Gabo

weixin_33087827的博客 273

php 正则表达式匹配(输出是否匹配以及匹配值) preg_match

preg_match — 执行一个正则表达式匹配preg_match ( $pattern , $subject , $matches )搜索subject与pattern给定的正则表达式的一个匹配.参数 :pattern : 要搜索的模式,字符串类型(正则表达式)。 subject : 输入的字符串。 matches :(可有可无)如果提供了参数matches,它将被填充为搜索结果。 $match

wml 1万+

Python爬虫实战:5分钟搞定东方财富网股票数据抓取(附完整代码)

本文详细介绍了如何使用Python爬虫快速抓取东方财富网的股票数据,包括环境配置、API分析、核心代码实现及优化技巧。通过简单的requests和pandas库,5分钟内即可获取高质量股票数据,适合量化交易和数据分析初学者。

weixin_29040367的博客 1187

php正则匹配任意字符串,正则表达式匹配任意字符(包括换行符)

正则表达式中,“。”(点符号)匹配的是除了换行符“\n”以外的所有字符。但有时候我们需要匹配包括换行符在内的字符,经过一番搜索,发现了几种正则表达式匹配任意字符(包括换行符)的方法。可以用 ([\s\S]*) ,也可以用 “([\d\D]*)”、“([\w\W]*)” 来匹配,就可以匹配包括换行符在内的任意字符。下面是正则表达式元字符介绍“^” :^会匹配行或者字符串的起始位置,有时还会匹配整个文...

weixin_39915081的博客 2301

【社区分享】从零开始学习 TinyML,建立 TensorFlow 深度学习模型(技术优化篇)

本文来自社区投稿与征集,作者王玉成,ML&IoT Google Developers Expert,温州大学智能锁具研究院总工程师。 了解更多:https://blog.youkuaiyun.com/wfing 经过前面几章的讨论,我们了解了TinyML 的概念,完成了一个最简单的TinyML 的模型并且运行在微控制器上,得出最基本的结果。但是在实际的工程应用中,模型建立之后,也需要再进一步结合许多优化方面的技术,这就是我们接下来想要探讨的。 5. 优化 TinyML 这本书也详细的向我...

tensorflowforum的博客 1万+

用STM32CubeMX和HAL库,5分钟搞定TB6612驱动直流电机(附完整代码)

本文详细介绍了如何使用STM32CubeMX和HAL库快速配置TB6612驱动直流电机,包括硬件连接、CubeMX工程配置、电机驱动逻辑实现及进阶优化技巧。通过图形化工具和代码示例,即使是新手也能在5分钟内完成电机调速系统的搭建,大幅提升开发效率。

weixin_26854829的博客 266

PHP正则表达式

正则表达式可以单独使用的字符, 就是原子。正则表达式是一串字符串, 由含有特殊意义的字符组成, 可以看做一种语言, 只有在函数中使用才能发挥作用。可以使用函数处理就不要使用正则表达式, 正则表达式的效率比函数低, 主要用于处理复杂字符串。如果能使用字符串处理函数处理的, 就不要用正则, 因为字符串处理函数的效率比正则稍高。“/” 是开始和结束的符号, 除了字母、数字、“” 以外的任意字符都可以是定界符。/ 原子和元字符 /模式修正符。在定界符号之外使用的特殊字符。

浅时光 1689

MAX30102心率血氧传感器原理图设计,已量产(e-Health传感器)

在最近的便携健康监测设备项目中,我们采用了集成算法的 MAX30102 心率血氧模块 —— 这类带内置 MCU 算法的传感器能直接输出心率 / 血氧数值,大幅降低了主控资源占用。但硬件电路的稳定性直接决定了 PPG 信号的采集精度,下面结合实际项目里的原理图,拆解下这个模块的设计细节。

不脱发的程序猿 1282

PHP常用正则表达式大全

【代码】PHP常用正则表达式大全

3256

2026 拉勾网:JA4+指纹绕过 + sign逆向 + 动态城市参数,月采集10万+数据实战

2026年拉勾网反爬技术全面升级,采用JA4+ TLS指纹识别、动态sign签名等多维度防护体系。本文提供工业级爬虫解决方案,通过curl_cffi模拟浏览器指纹、逆向sign加密算法、动态生成城市参数三大核心技术,实现高效稳定的数据采集。系统采用分层架构设计,包含任务调度、签名生成、多线程引擎等模块,单月可获取10万+条招聘数据。重点解析了JA4+指纹识别原理、传统方法的局限性,以及通过HMAC-SHA256算法逆向sign参数的完整过程。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2395

基于matlab目标雷达横截面建模(附源码)

雷达系统依靠目标反射或散射来检测和识别目标。目标反射越强,雷达接收器返回的回波就越大,从而获得更高的信噪比(SNR)和更高的检测可能性。在雷达系统中,从目标反射的能量由雷达横截面(RCS)决定,定义为sigma代表RCS,R是雷达与目标之间的距离,Es是从目标反射的信号的场强,以及Ei是入射到目标上的信号的场强。通常,目标向各个方向散射能量,RCS是入射角,散射角和信号频率的函数。RCS 取决于目标的形状和构建目标的材料。用于RCS的常用单位包括平方米或dBsm。

珞瑜的博客 3085

【转,以备忘记】php 正则匹配中文

在做表单验证时对用户姓名的验证规则有以下要求 要求:输入的内容需要满足的条件是: 1.允许输入字符:数字(0-9)、字母(a-z和A-Z)、汉字、下划线(_)、圆点(.)和空格; 2、姓名中间允许有空格; 3、下划线、圆点和空格均为英文状态输入法下的字符; 4、姓名前后不允许输入下划线、圆点、空格和特殊字符 $str = 'abc测试 ef'; if(preg_match('/^

YEO想懂那片黑色! 869

AI时代的软件质量保证新方法论

3.2.1 质量保证的方法论 质量保证(Quality Assurance, QA)是一种系统化的方法,用于确保产品或服务符合预定的质量标准。在AI时代,软件质量保证的方法论需要适应不断变化的AI技术和应用场景。 3.2.1.1 质量管理体系的构建 首先,构建一个完善

AI天才研究院 1356

php 正则第一个,为什么这个正则表达式与php中的第一个结果不匹配?

这是我的正则表达式:❰(❮\d+[\-\d]*❯)⦓([^⦔]*)⦔❱Nullaimperdiet❰❮6❯⦓“Lorem ipsum dolor sit amet,consectetur adipiscing elit . Suspendisse gravida consectetur mauris,eget ornare velitconsequatvitae.⦔❱❰❮7❯⦓Morbiinqu...

weixin_29147045的博客 225

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

PHP 正则匹配中文

在做表单验证时对用户姓名的验证规则有以下要求 要求:输入的内容需要满足的条件是: 1、允许输入字符:数字(0-9)、字母(a-z和A-Z)、汉字、下划线(_)、圆点(.)和空格; 2、姓名中间允许有空格; 3、下划线、圆点和空格均为英文状态输入法下的字符; 4、姓名前后不允许输入下划线、圆点、空格和特殊字符 $str = 'abc测试 ef'; if (preg_match('/^

ylhalo的博客 743

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

php正则匹配中文

PHP中文的正则匹配是一个麻烦的事,正则本来就半知半觉,还要加上编码,ascii,或者是url编码,加上编码就会变麻烦,庆幸的是找到篇不错的文章,先摘录于此,以免遗失或忘记。 参考以下内容修改的代码 if($en_utf8) {    $joid = preg_replace("[^0-9a-zA-Z_-|\x4e00-\x9fa5|:|\/|#|\.]","",$joid);   

haozi3156666的专栏 737

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

php 正则匹配中文

在做表单验证时对用户姓名的验证规则有以下要求 要求:输入的内容需要满足的条件是: 1.允许输入字符:数字(0-9)、字母(a-z和A-Z)、汉字、下划线(_)、圆点(.)和空格; 2、姓名中间允许有空格; 3、下划线、圆点和空格均为英文状态输入法下的字符; 4、姓名前后不允许输入下划线、圆点、空格和特殊字符 $str = 'abc测试 ef'; if(preg_match('/^[a-zA-Z0-9

啊春儿 396

备忘:关于php正则匹配不成功的问题

某php程序的正则部分突然不能正常工作,调试发现正则匹配失败 仔细检查后发现正则表达式无误,但preg_match始终返回false。 翻手册的时候看到了preg_last_error()函数,添加后发现返回值为PREG_BACKTRACK_LIMIT_ERROR 搜索一番后发现是非贪婪模式的正则表达式(形如:".*?" "[\s\S]*?")导致的回溯计数 大于了设定值pcre.back

cnfixit的专栏 1753

rn php,rn怎样在PHP的正则表达式中匹配到?

如何匹配到\r\n?(\\r\\n)+好像不行?回复讨论(解决方案)“/[\r\n]+/" 一定要放在双引号中,否则 \r\n 会被解释为 \、r、\、n或 '/[\x0d\x0a]+/'我单独做了个字符串试了下,确实是可以,但是我遇到的问题是:我是从数据库中取出的一个字符串,这串字符串中包含\r\n这样的换行符,直接输出到浏览器是原样输出,我想用preg_replace用替换这两个字符,不管怎样...

weixin_42506647的博客 128

php用函数的方式计算2 4 8,php函数unserialize数据返回false问题分析

unserialize的这个问题是由一个emlog论坛用户在使用时报错而发现的问题表现情况如下:emlog缓存的保存方式是将php的数据对象(数组)序列化(serialize)后以文件的形式存放,读取缓存的时候直接反序列化(unserialize)缓存字符串即可读取数据,关于序列化和反序列化的原理请看我先前的文章《php函数serialize()与unserialize()不完全研究》我从用户那里...

weixin_29131709的博客 175

php bug多,php – 多字节字符串和环视奇怪的bug

为什么以下代码对于不同的多字节字符串表现不同?echo preg_replace('@(?=\pL)@u', '*', 'م'); // prints: '*م' ✓echo preg_replace('@(?=\pL)@u', '*', 'ض'); // prints: '*ض' ✓echo preg_replace('@(?=\pL)@u', '*', 'غ'); // ...

weixin_39835158的博客 126

Mongodb正则模糊查询,查询的字段为int型时,无法查出结果

背景:模糊查询,但所查询的字段为int型,但正则匹配的是字符串,导致无法查出结果 思路:可以先把所查询的字段转为string类型,再去查询 吐槽:国内关于mongodb的资料还是少,这个办法是在外网找到的 上代码吧,查询project_id以2开头的数据, mongodb shell: db.getCollection('project_recommend').find({ "$expr": { "$regexMatch": { "input": {

weixin_42513185的博客 1675

Ctf.show-web3复盘

目录 重点看这个正则匹配 你问我为啥知道是前面的\\导致后面的|\* 匹配不到?我们可以做下一个实验 然后我们来做一下题目 <html> <head> <title>ctf.show萌新计划web1</title> <meta charset="utf-8"> </head> <body> <?php # 包含数据库连接文件 include("config.php"); # 判断get..

weixin_54894046的博客 633

php 反序列化 编码,php中序列化与反序列化在utf8和gbk编码中测试

在php中如果我们统一编码是没有什么问题了,但是很多朋友会发现一个问题就是utf8和gbk编码中返回的值会有所区别了,下面一聚教程小编就来介绍它们的一些问题。php 在utf8和gbk编码下使用serialize和unserialize互相序列化和反序列化会出现无法成功反序列化的问题。问题出现的原因主要是在不同编码下strlen函数计算中文字符串长度不同的原因。 代码如下 复制代...

weixin_35875219的博客 257

php phalcon 中文手册,php的phalcon框架不能验证中文字符

直接在php中验证可以验证$value = '电商';preg_match('/^[a-zA-Z\x{4e00}-\x{9fa5}][a-zA-Z_\-\x{4e00}-\x{9fa5}]*$/u',$value,$m)在phalcon的控制器的方法中就不能验证,public function registerAction(){if($this->request->isPost()){...

weixin_30638387的博客 142

使用preg_match正则书写正确,但匹配不到的解决办法

使用preg_match正则书写正确,但匹配不到的解决办法 原文见:https://blog.lmlyz.online/index/detail/id/64.html 以下建立在正则书写正确,且有匹配内容的前提下,有可能是preg_match对匹配的字符串有长度限制的问题 解决办法(任选一个): 1.在php.ini中加入(随便放到哪里):pcre.backtrack_limit=-1 2.ini...

江枫渔火 1143
上一篇: php异步测试
下一篇: PHP踩坑大全
小Z笔记
博客等级 码龄9年 11粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值