我正在尝试使用正则表达式,但得到意想不到的结果:
<?php
$a = "Can't you figure it out?";
preg_match("~you (.+) ~", $a, $match);
echo $match[1];
?>
结果:
图出来了
需要结果:
数字
发生的事情
是,你的.+
序列默认是贪婪的,所以它会吞噬字符串末尾的所有内容。由于之后您的正则表达式中还有一个空间,它会回溯直到它可以匹配该空间,因此最终匹配"弄清楚"。
你可以使用非贪婪量词(它一次只吃一个,向前而不是反向工作):.+?
,或"单词"字符(字母/数字/下划线):'w+