[請益] preg_match的(.+?) 怎麼解讀??

看板PHP作者 (徬徨)時間16年前 (2009/09/11 17:23), 編輯推噓1(107)
留言8則, 4人參與, 最新討論串1/2 (看更多)
分開看 我好像是看得懂 * 等價於{0,} 匹配前面的子運算式零次或多次 + 等價於{1,} 匹配前面的子運算式一次或多次 ? 等價於{0,1} 匹配前面的子運算式零次或一次 . 匹配除「\n」之外的任何單個字元 但是 .+? (.+?) .+ 這三個表示是不同在哪邊勒? 我寫了個 preg_match( '/^ABC(.+?)/' , ABCKDDD ,$a) 然後輸出來看是 Array ( [0] => ABCK [1] => K ) preg_match('/^ABC.+?/',ABCKDDD,$a) Array ( [0] => ABCK ) preg_match('/^ABC.+/',ABCKDDD,$a) Array ( [0] => ABCKDDD ) preg_match('/^ABC(.*?)/',ABCKDDD,$a) Array ( [0] => ABC [1] => ) 新手上路 懇求解惑 感謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.60.127.24

09/11 17:26, , 1F
看來 + 和 ? 同時使用的時候 + 無效 +? === ?
09/11 17:26, 1F

09/11 17:30, , 2F
這樣寫好怪喔... +後面多個?是non-greedy
09/11 17:30, 2F

09/11 17:32, , 3F
orz... 我錯了
09/11 17:32, 3F

09/11 17:32, , 4F
好像不應該說.+?很怪
09/11 17:32, 4F

09/11 17:33, , 5F
是我寫得很怪嗎 @@ 我不太知道怎麼寫 依樣畫葫蘆 XD
09/11 17:33, 5F

09/11 17:34, , 6F
我也覺得很怪 +? 是等於 {1}嗎
09/11 17:34, 6F

09/11 17:34, , 7F
反正表示1以上的+號後面如果有問號,表示non-greedy
09/11 17:34, 7F

09/11 17:38, , 8F
.+? 代表符合「.+」的最小長度字串。
09/11 17:38, 8F
文章代碼(AID): #1AgXSSvL (PHP)
文章代碼(AID): #1AgXSSvL (PHP)