Php 为什么这个正则表达式不能找到一个简单的字符串?

Php 为什么这个正则表达式不能找到一个简单的字符串?,php,regex,Php,Regex,我试图找到一些样本字符串的匹配项,但对于它为什么不起作用,我感到震惊 以下是一些示例字符串,可以在和turtle或fox之间找到任意数量的单词: The Quick Brown Fox The Slow Green Turtle The Blah Blah Fox The Blah Blah Blah Turtle 以下是不起作用的正则表达式: if(preg_match("/the \w* (fox|turtle)/i",$str)){ echo "Match!<br>";

我试图找到一些样本字符串的匹配项,但对于它为什么不起作用,我感到震惊

以下是一些示例字符串,可以在和turtle或fox之间找到任意数量的单词:

The Quick Brown Fox
The Slow Green Turtle
The Blah Blah Fox
The Blah Blah Blah Turtle
以下是不起作用的正则表达式:

if(preg_match("/the \w* (fox|turtle)/i",$str)){
   echo "Match!<br>";
}

这是因为在狐狸或乌龟之前有两个词,而不是一个

对于不确定的字数:

if ( preg_match('~\bthe(?> \w+)*? (fox|turtle)\b~i', $str) )

注意:惰性量词*?如果要将慢速乌龟与以下字符串匹配,则需要使用:慢速乌龟和快速狐狸,而不是所有句子

事实上,这是因为空间不是由\w处理的,您希望\w*与“快速棕色”匹配。 所以你可以试试

if(preg_match("/the[\w ]*(fox|turtle)/i",$str))

要匹配两个块之间的任意数量的单词。

@JenBorn:请选择一个答案并标记它。所以下一个要搜索的用户将知道有一个匹配。对不起!当我试图马上接受它时,它不会让我忘记。