首页
关于
友链
推荐
肥啾解析
百度一下
肥啾GPT
Search
1
宝塔面板登录 phpMyAdmin 提示服务器和客户端上指示的HTTPS之间不匹配
269 阅读
2
Customer complaints evolve with in-car tech
188 阅读
3
JavaScript解析
153 阅读
4
内连接,左连接,右连接作用及区别
111 阅读
5
所谓关系
109 阅读
默认分类
网游架设
手机游戏
python
PHP
Mysql
VBA
C++
JAVASCRIPT
javascript基础
Oracle
生产管理
计划控制
ERP系统开发
APS排产
MES研究
考勤系统
CPA
财管
实务
经济法
战略
审计
税法
藏书架
古典名著
世界名著
编程秘籍
攻防渗透
经管书籍
大佬传经
风雅读物
考试相关
心情格言
拾玉良言
外文报刊
外刊随选
Facebook
Twitter
China Daily
软考
登录
Search
标签搜索
期刊读物
古文
何瑜明
累计撰写
160
篇文章
累计收到
154
条评论
首页
栏目
默认分类
网游架设
手机游戏
python
PHP
Mysql
VBA
C++
JAVASCRIPT
javascript基础
Oracle
生产管理
计划控制
ERP系统开发
APS排产
MES研究
考勤系统
CPA
财管
实务
经济法
战略
审计
税法
藏书架
古典名著
世界名著
编程秘籍
攻防渗透
经管书籍
大佬传经
风雅读物
考试相关
心情格言
拾玉良言
外文报刊
外刊随选
Facebook
Twitter
China Daily
软考
页面
关于
友链
推荐
肥啾解析
百度一下
肥啾GPT
搜索到
160
篇与
的结果
2025-08-05
此内容被密码保护
加密文章,请前往内页查看详情
2025年08月05日
2 阅读
0 评论
0 点赞
2025-08-01
此内容被密码保护
加密文章,请前往内页查看详情
2025年08月01日
1 阅读
0 评论
0 点赞
2025-07-31
此内容被密码保护
加密文章,请前往内页查看详情
2025年07月31日
3 阅读
0 评论
0 点赞
2025-07-29
PHP正则匹配
PHP 的正则表达式功能主要基于 PCRE(Perl Compatible Regular Expressions)库(版本 >=8.x)。以下是其核心原理和关键机制的深入解析:1. 核心引擎:回溯型 NFA(非确定性有限自动机)PHP 使用 NFA 引擎,其特点包括:路径探索:同时尝试所有可能的匹配路径(通过回溯)。贪婪匹配默认:量词(*, +, ?, {m,n})默认尽可能多地匹配字符。回溯机制:当当前路径匹配失败时,引擎回退到最近的决策点尝试其他路径(核心机制)。2. 匹配过程详解以正则 /(a|b)+c/ 匹配字符串 "abc" 为例:分支选择:先尝试匹配 "a"(分支 (a|b) 的第一个选项)。量词贪婪:尝试继续匹配,发现 "b" 符合,匹配结果为 "ab"。匹配失败与回溯:尝试匹配 "c",但剩余字符是 "c"(非 "c" 直接匹配)。引擎回退:减少 + 的匹配次数,释放最后一个字符 "b"。重新尝试:用 "c" 匹配释放后的 "b" → 失败。继续回溯到第一个分支,尝试 (a|b) 的第二个选项 "b",最终路径 "a" → "b" → "c" 成功。3. 性能陷阱:灾难性回溯当正则存在嵌套量词或模糊路径时,回溯可能指数级增长:phpCopy Code// 危险正则:嵌套量词 + 冲突后缀$regex = '/(a+)+b/'; $str = 'aaaaaaaaaaaaac'; // 结尾是 'c' 而非 'b'回溯过程:外层 (a+) 和内层 a+ 尝试所有组合分割 "a" 序列。直到所有组合失败,时间复杂度达 O(2ⁿ)(n 为 a 的数量)。4. PHP 优化机制a) 预编译 & 缓存phpCopy Code// 编译后的正则被缓存,后续调用直接复用preg_match('/\d+/', 'test123'); // 首次编译preg_match('/\d+/', '456'); // 使用缓存b) 零宽断言(Lookaround)(?=...) / (?!...):检查右侧条件(不消耗字符)。(?<=...) / (?<!...):检查左侧条件。phpCopy Code// 匹配 "q" 后非 "u" 的单词preg_match('/q(?!u)/', 'qatar'); // 匹配成功('q' 后是 'a')c) 回溯控制(避免灾难性回溯)原子组 (?>...):组内匹配成功后,放弃内部回溯点。phpCopy Code$regex = '/(?>a+)+b/'; // 内层 a+ 匹配后锁定,不再回溯固化分组 (?> ):等同于原子组。占有优先量词 *+, ++, ?+:匹配后不释放字符。phpCopy Code$regex = '/a++b/'; // 等价于 (?>a+)b5. 其他关键特性a) 子组捕获括号 () 捕获内容存入 $matches:phpCopy Codepreg_match('/(\d+)/', 'ID: 123', $matches);// $matches[0] = "123", $matches[1] = "123"b) 模式修饰符i:忽略大小写(/[a-z]/i 匹配 "A")。s:单行模式(. 匹配换行符 \n)。u:UTF-8 模式(正确处理中文等)。6. 最佳实践与性能建议避免嵌套量词:如 (a+)+、(.)。用具体字符替代 .:如 \d+ 优于 .*?(\d+)。使用非捕获组 (?: ):减少内存开销。phpCopy Codepreg_match('/(?:\d{4})-(?:\d{2})/', '2023-05');锚定起始位置:用 ^ 或 \A 减少无效扫描。优先使用占有优先量词:如 a++b 替代 a+b(避免回溯)。总结组件 作用NFA 引擎 通过回溯探索所有路径,支持复杂匹配。灾难性回溯 嵌套量词导致指数级计算,需用原子组/占有优先量词避免。预编译缓存 提升重复匹配性能。零宽断言 上下文检查不影响匹配位置。回溯控制 原子组 (?> ) 和占有优先量词 *+ 锁定匹配结果。关键点:理解回溯机制是优化 PHP 正则性能的核心。通过减少不确定性路径(如模糊量词)和利用回溯控制特性,可显著提升效率。
2025年07月29日
1 阅读
0 评论
0 点赞
2025-07-29
hyperV接入外部IP办法
点击操作,选择虚拟机交换管理器选择外部创建,应用设置虚拟机,确定即可然后在虚拟机系统里设置固定IP即可
2025年07月29日
2 阅读
0 评论
0 点赞
1
...
7
8
9
...
32
0:00