正则表达式意外返回

时间:2014-05-31 04:57:51

标签: regex

为什么这会作为匹配返回?

  • 应匹配:"温暖的一天"
  • 不应该匹配:"最温暖的一天";

$str = "One warm day";
$r = "/warm\s*(day)*/i";
echo "STR: $str<br>";
echo "REGEX: $r<br>";
if(preg_match($r,$str)){
    echo "match";
}

2 个答案:

答案 0 :(得分:1)

从捕获组中删除*量词含义(0或更多次)。

/warm\s*(day)/i

Live Demo

答案 1 :(得分:0)

由于空白和&#34; day&#34;是可选的,您可能必须指定行尾:

/warm\s*(day)*$/i