正则表达式圆括号--()

正则的圆括号描述

(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条,那么关于第一个测试返回两条也就明白了,正则的匹配结果作为数组的第一个元素,而圆括号中的匹配内容会作为匹配的第二个元素返回。

 

posted @ 2013-10-27 17:21  Debm.Zhang  阅读(1145)  评论(0编辑  收藏  举报