进阶 - 匹配但不保存

  • 作者:KK

  • 发表日期:2017.9.10


JS版说明

console.log( 'abc industries defg'.match(/industr(y|ies)/) );

会得到industriesies两个元素的数组,如果不想将括号里的内容储存到匹配结果里,在括号里前面加上?:就可以了,如下:

console.log( 'abc industries defg'.match(/industr(?:y|ies)/) );

这个?:看上去和前面《正反向预查》里面的?=?!好像差不多的样子,看上去差不多,但是?:至少会匹配括号外面和里面的内容形成一个整体,只是不将括号里的内容单独再保存一份在结果里而已


PHP代码

preg_match('#industr(y|ies)#', 'abc industries defg', $matchResult1);

preg_match('#industr(?:y|ies)#', 'abc industries defg', $matchResult2);

header('Content-type:text/plain');
print_r([
	$matchResult1, //industries和ies
	
	$matchResult2, //只有  industries
]);