<pre class="brush:php;toolbar:false;"courier new',courier,宋体,monospace,'Microsoft YaHei'; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(243,255,236)"><span></span><pre class="brush:php;toolbar:false;"courier new',courier,宋体,monospace,'Microsoft YaHei'; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(243,255,236)"><span>.表示除\n之外的任意字符; *表示匹配0-无穷; +表示匹配1-无穷;</span>
<span>.* — 表示匹配0个或多个处换行符以外的字符;</span>
<span>.+ — 表示</span><span>匹配1个或多个处换行符以外的字符;</span>
<span></span>
<span></span>后边没有?时表示贪婪模式(非懒惰模式);登录后复制
<span>后边多一个?表示懒惰模式;</span>
<span>?必须跟在*或者+后边用; 如:@@##@@ 如果用正则匹配src中内容非懒惰模式匹配 src=".*" 匹配结果是:src="test.jpg" width="60" height="80" 意思是从="往后匹配,直到最后一个"匹配结束 懒惰模式正则: src=".*?" 结果:src="test.jpg" 因为匹配到第一个"就结束了一次匹配。不会继续向后匹配。</span>
<span></span>
<span>在懒惰模式的正则(.*?或.+?)应用中会出现一种特殊的情况,</span>
如:<{ if $test == "test"<span></span>}> 我是测试数据<{ /if }><span></span>如果使用懒惰模式的正则匹配<{和}>里面的内容(当<{和}>的内侧都存在空格,并且这个空格可有可无时),登录后复制
我们一般这样写正则:
<span>'/<\{\s*if\s*(.+?)</span><span>\s*</span><span>\}</span><span>>(.+?)<\{\s*\/if\s*\}>/ies'
</span><span>特别注意其中有颜色的部分,尤其是绿色的部分。当懒惰正则后面紧跟着一个用*修饰的原子时,</span>
<span>如果在</span><span>}>前面存在“可用绿色部分(贪婪)匹配的内容”时,它会以绿色部分匹配到的内容为懒惰模式</span>
<span>的匹配结束点,匹配到这里后就结束匹配。</span>
<span></span>如果在}>前面不存在“可用绿色部分(贪婪)匹配的内容”时,它会以绿色部分后面紧跟的一个原子(黄色部分)登录后复制
<span></span><span></span>为懒惰模式<span>的匹配结束点,匹配到这里后就结束匹配。</span>登录后复制
<span>关于“贪婪模式”和“懒惰模式”,可参考博文“php正则表达式—修正模式”</span>
<span></span>
以上就介绍了php正则表达式—贪婪模式(或+)与懒惰模式(?或+?)的应用,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号