php正規表示式—貪婪模式(或+)與懶惰模式(?或+?)的應用
.表示除\n之外的任意字符;
*表示匹配0-无穷;
+表示匹配1-无穷;.* — 表示匹配0个或多个处换行符以外的字符;.+ — 表示匹配1个或多个处换行符以外的字符;后边没有?时表示贪婪模式(非懒惰模式);后边多一个?表示懒惰模式;?必须跟在*或者+后边用;
如:
如果用正则匹配src中内容非懒惰模式匹配
src=".*"
匹配结果是:src="test.jpg" width="60" height="80"
意思是从="往后匹配,直到最后一个"匹配结束
懒惰模式正则:
src=".*?"
结果:src="test.jpg"
因为匹配到第一个"就结束了一次匹配。不会继续向后匹配。在懒惰模式的正则(.*?或.+?)应用中会出现一种特殊的情况,如:<{ if $test == "test"}> 我是测试数据<{ /if }>如果使用懒惰模式的正则匹配<{和}>里面的内容(当<{和}>的内侧都存在空格,并且这个空格可有可无时),我们一般这样写正则:'/<\{\s*if\s*(.+?)\s*\}>(.+?)<\{\s*\/if\s*\}>/ies'
特别注意其中有颜色的部分,尤其是绿色的部分。当懒惰正则后面紧跟着一个用*修饰的原子时,如果在}>前面存在“可用绿色部分(贪婪)匹配的内容”时,它会以绿色部分匹配到的内容为懒惰模式的匹配结束点,匹配到这里后就结束匹配。如果在}>前面不存在“可用绿色部分(贪婪)匹配的内容”时,它会以绿色部分后面紧跟的一个原子(黄色部分)
为懒惰模式的匹配结束点,匹配到这里后就结束匹配。关于“贪婪模式”和“懒惰模式”,可参考博文“php正则表达式—修正模式”
以上就介紹了php正規表示式—貪婪模式(或+)與懶惰模式(?或+?)的應用,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31