[分享] Regular expression: 贪婪、非贪婪

楼主: knuckles (那克斯)   2011-10-11 22:31:35
※ [本文转录自 PHP 看板 #1Eb53dRp ]
作者: knuckles (那克斯) 看板: PHP
标题: [分享] Regular expression: 贪婪、非贪婪
时间: Tue Oct 11 22:21:23 2011
自己写的一些笔记,给大家参考一下
我也是初学regex的新手,没看过书只看了一些网页教学而已
有什么错误或观念不对的地方还请大家多多指教 ^^
网页上色好读版: http://disp.cc/b/11.cj-2q1S
贪婪与非贪婪
当要抓取一段不固定的字串,例如 <b> 与 </b> 中间的字
最常看到的方法就是使用正规表示式 regular expression (以下简称 regex):
/<b>(.*?)<\/b>/
其中 . 代表任意字符
* 代表前面的字元会出现0~∞次
? 代表使用非贪婪(non-greedy)的方法
( ) 代表将匹配的结果输出到要抓取的第一个字串$1
若使用 /<b>(.*)<\/b>/ 则是代表使用贪婪(greedy)的方法
贪婪代表所有可能的匹配结果中,取字符数最多的
非贪婪就是取字符数最少的
如果整个字串确定就只有一组 <b> </b> 的话那匹配的结果就一样
但若是像这样的字串:
$string = "000<b>abc</b>1234<b>xxx</b>5678<b>yyy</b>0000";
贪婪抓到的 <
作者: cutecpu (可爱中央处理器)   0000-00-00 00:00:00
推,好文^_^
作者: PurpleCrow (17868)   0000-00-00 00:00:00
再推! good!
作者: Piceman (派斯面)   2011-06-26 02:28:00

Links booklink

Contact Us: admin [ a t ] ucptt.com