Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:试图理解子模式正则表达式匹配_Php_Regex - Fatal编程技术网

PHP:试图理解子模式正则表达式匹配

PHP:试图理解子模式正则表达式匹配,php,regex,Php,Regex,我试图理解子模式是如何工作的,我对一些事情有点困惑: $var2 = 'cat dog cow moose bat'; $match = preg_match( "/(dog)/", $var2, $arr ); var_dump($arr); array(2) { [0]=> string(3) "dog" [1]=> string(3) "dog" } 我不知道为什么数组中有2个元素。在阅读BookBlow中的php书籍引用时,我假设数组中的第0个元素

我试图理解子模式是如何工作的,我对一些事情有点困惑:

$var2 = 'cat dog cow moose bat';
$match = preg_match(
    "/(dog)/",
    $var2,
    $arr
);
var_dump($arr);
array(2) { [0]=> string(3) "dog" [1]=> string(3) "dog" } 
我不知道为什么数组中有2个元素。在阅读BookBlow中的php书籍引用时,我假设数组中的第0个元素与整个字符串匹配,而第二个元素仅与子字符串匹配。这是正确的吗?只是想确保我明白这一点

数组的第0个元素设置为匹配的整个字符串。这个 第一个元素是与第一个子模式匹配的子字符串(如果有),则 第二个元素是与第二个子模式匹配的子字符串,依此类推。

摘自文档:

如果提供了匹配项,则它将填充搜索结果。 $matches[0]将包含与完整模式匹配的文本, $matches[1]将包含与第一个捕获的子模式匹配的文本,以此类推

然后,使用/dog/regex,您将拥有:

$matches[0]包含/dog/results完整模式 $matches[1]包含首次捕获组的狗的结果 如果您的第一个捕获组等于您的完整模式,则匹配[0]=匹配[1]。

正确

[0]=匹配的完整模式-即狗 [1] 第一只被抓获的狗 因为你的整个模式也被捕获了,所以两者都是相同的

如果使用regex/cat-dog/结果将是

[0]=匹配的完整模式-即猫狗 [1] 第一只被抓获的狗
是的,您是正确的,在您的情况下,您只有1个元素,因此match[0]=match[1]