概述
前言
前两天,写那个PHP错误分析工具,用到了大量的正则表达式,在这里就和大家分享一点点。
什么是正则表达式
对字符串进行深度处理的一个工具,具备自己的一套语法。如果你从未接触过正则表达式,这篇文章可以作为开拓眼界之用。
什么是贪婪模式
想要更多,就是贪婪。非贪婪模式:尽量少的匹配
贪婪模式:尽量多的匹配
举个例子
定义字符串 aaaaa,正则表达式 /a+/(a+表示匹配字母a,1次或多次)
那么匹配结果是 “a” 还是 “aaaaa”?$str = 'aaaaa';
preg_match('/a+/', $str,$out);
var_dump($out);
搞不清的话,可以用上面这段代码,来测试一下。
解题
如果是贪婪模式(尽量多的匹配),就匹配 aaaaa,如果非贪婪模式,则只有一个 a。
答案
上面的匹配结果:aaaaa
说明什么?
PHP中正则表达式,默认就是贪婪模式。
如何关闭贪婪模式
PHP提供了一个正则修饰符“U”(注意,必须是大写的)将表达式改为 /a+/U 即可。$str = 'aaaaa';
preg_match('/a+/U', $str,$out);
var_dump($out);
这次就只匹配一个 a 了。
临时启用贪婪模式
使用“?”号,可以在表达式中,临时启用贪婪模式,比如 /a+?/U 虽然有 U 关闭贪婪模式,但依然可以匹配 aaaaa。$str = 'aaaaa';
preg_match('/a+?/U', $str,$out);
var_dump($out);
警告
正则表达式的语法在不同语言,稍有不同。像 U 这种修饰符,仅限于PHP语言。如果是javascript,则是 g。
使用有些正则表达式测试工具时,贪婪模式的开关看起来可能是不同的。
总结
正则表达式这个鬼东西太抽象,长时间不用总会忘记,不过不用担心,看完文章留个印象,下次需要使用的时候随便查下手册就能适应了。
最后
以上就是高挑小蜜蜂为你收集整理的php 正则表达式 贪婪模式,20180614 - PHP实战技巧(5)正则表达式之贪婪模式的全部内容,希望文章能够帮你解决php 正则表达式 贪婪模式,20180614 - PHP实战技巧(5)正则表达式之贪婪模式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复