正则的圆括号描述
(1). 在被修饰匹配次数的时候,括号中的表达式可以作为整体被修饰
(2). 取匹配结果的时候,括号中的表达式匹配到的内容可以被单独得到
描述参见(http://www.regexlab.com/zh/regref.htm)
结合php的preg_match函数来看下以下运行的结果
$str = 'cabcdf1da32'; $pattern = '/(abcd)/i'; preg_match($pattern, $str, $matches); echo '<pre>'; var_dump($matches);
结果为
array 0 => string 'abcd' (length=5) 1 => string 'abcd' (length=4)
这里为什么会返回两个abcd呢?
稍微修改一下正则表达式,再来看一下
$str = 'cabcdf1da32'; $pattern = '/c(abcd)/i'; preg_match($pattern, $str, $matches); echo '<pre>'; var_dump($matches);
结果为
array 0 => string 'cabcd' (length=5) 1 => string 'abcd' (length=4)
结合开始说的第2条,那么关于第一个测试返回两条也就明白了,正则的匹配结果作为数组的第一个元素,而圆括号中的匹配内容会作为匹配的第二个元素返回。