我正在尝试使用正则表达式,但会得到意想不到的结果:
<?php
$a = "Can't you figure it out?";
preg_match("~you (.+) ~", $a, $match);
echo $match[1];
?>
结果:
想一想
需要结果:
图
答案 0 :(得分:2)
正在发生的事情是您的.+
序列默认情况下是贪婪,因此它会将所有内容吞噬到字符串的末尾。由于此后你的正则表达式中还有一个空格,它会回溯到它可以匹配那个空格,因此最终匹配&#34;计算它&#34;。
你可以使用非贪婪的量化器(它只吃一个并且向前工作而不是反向):.+?
,或者#34;字&#34;字符(字母/数字/下划线):\w+