查看單個文章
舊 2007-10-18, 09:27 PM   #1
Admin1
管理員
 
Admin1 的頭像
榮譽勳章
UID - 112827
在線等級: 級別:29 | 在線時長:972小時 | 升級還需:48小時級別:29 | 在線時長:972小時 | 升級還需:48小時級別:29 | 在線時長:972小時 | 升級還需:48小時級別:29 | 在線時長:972小時 | 升級還需:48小時級別:29 | 在線時長:972小時 | 升級還需:48小時級別:29 | 在線時長:972小時 | 升級還需:48小時級別:29 | 在線時長:972小時 | 升級還需:48小時級別:29 | 在線時長:972小時 | 升級還需:48小時級別:29 | 在線時長:972小時 | 升級還需:48小時
註冊日期: 2007-02-18
VIP期限: 0000-00
文章: 3507
精華: 0
現金: 1702 金幣
資產: 10196 金幣
預設 Regular Expression 的 Nongreedy 一問

在 PHP 中可以使用 POSIX 和 PERL 版本的 Regular Expression,我有一個與 Greedy 有關的問題想問一下,如下:

PHP 語法:
$str "http://123.JPG___456.JPG";
$match = array();
$pattern "http://(.*\.JPG)";

ereg($pattern$str$match); 
如果程式這樣子寫,則用 print_r() 輸出 $match 的內容會是:

語法:
Array
(
    [0] => http://123.JPG___456.JPG
    [1] => 123.JPG___456.JPG
)

想請問一下,這個 pattern 應該要怎麼寫才能讓 $match[1] 所比對到的值為 123.JPG,而不是 123.JPG___456.JPG?

我看書上說 pattern 可以使用 Nongreedy Qualifier(*? 與 +*),可是我一寫下去 compile 就是不會過,不知道該怎麼寫才對? 還是這只支援 PERL 版的、不支援 POSIX 版??
Admin1 目前離線  
送花文章: 8870, 收花文章: 2195 篇, 收花: 5820 次
回覆時引用此帖