[分享] 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