$rule1="/(?:\w+)/";
$rule2="/(\w+)/";
preg_match($rule1,'Hi',$matches);
preg_match($rule2,'Hi',$matches2);
//打印?存入$matches和$matches2中的匹配項。
print_r($matches);
print_r($matches2);
測試后,$rule1,若匹配,則捕獲整體,不會捕獲子組
????$rule2,若匹配,則捕獲整體,并捕獲子組
????????
問題:既然不捕獲子組,那么直接不用括號就可以,例如:‘/\w+/’
??????'/(?:?\w+)/'是不是顯得有點多余?
???(?:?pattern)?一般用在什么情況下?
1 回答
已采納

習慣受傷
TA貢獻885條經驗 獲得超1144個贊
(?:pattern) 匹配 pattern 但不獲取匹配結果,也就是說這是一個非獲取匹配,不進行存儲供以后使用。這在使用 "或" 字符 (|) 來組合一個模式的各個部分是很有用。例如, 'industr(?:y|ies) 就是一個比 'industry|industries' 更簡略的表達式。
- 1 回答
- 0 關注
- 1913 瀏覽
添加回答
舉報
0/150
提交
取消