我是靠谱客的博主 高挑小蜜蜂,最近开发中收集的这篇文章主要介绍php 正则表达式 贪婪模式,20180614 - PHP实战技巧(5)正则表达式之贪婪模式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前言

前两天,写那个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)正则表达式之贪婪模式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部