Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.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 使用preg_match获得意外结果_Php_Regex_Preg Match - Fatal编程技术网

Php 使用preg_match获得意外结果

Php 使用preg_match获得意外结果,php,regex,preg-match,Php,Regex,Preg Match,我尝试使用正则表达式,但得到了意外的结果: <?php $a = "Can't you figure it out?"; preg_match("~you (.+) ~", $a, $match); echo $match[1]; ?> 所发生的事情是,默认情况下,+序列是贪婪的,因此它会吞噬所有内容,直到字符串结束。因为在此之后您的正则表达式中还有一个空间,所以它会回溯,直到它能够匹配该空间,因此最终匹配为“figure it” 您可以使用非贪婪量化器(它一次只吃一个,并向前

我尝试使用正则表达式,但得到了意外的结果:

<?php

$a = "Can't you figure it out?";
preg_match("~you (.+) ~", $a, $match);
echo $match[1];

?>

所发生的事情是,默认情况下,
+
序列是贪婪的,因此它会吞噬所有内容,直到字符串结束。因为在此之后您的正则表达式中还有一个空间,所以它会回溯,直到它能够匹配该空间,因此最终匹配为“figure it”


您可以使用非贪婪量化器(它一次只吃一个,并向前工作,而不是反向):
,或“word”字符(字母/数字/下划线):
\w+

发生的情况是,默认情况下,
+
序列是贪婪的,因此它会将所有内容吞噬到字符串末尾。因为在此之后您的正则表达式中还有一个空间,所以它会回溯,直到它能够匹配该空间,因此最终匹配为“figure it”

您可以使用非贪婪量化器(它一次只吃一个,并向前工作,而不是反向):
,或“单词”字符(字母/数字/下划线):
\w+