preg_match 判断相似模式

preg_match to determine similar pattern

$lines ="Where to find train station";
$pattern = "/Where ([^\s]+) find train station/i";

preg_match($pattern, $lines, $matches);
var_dump($matches);

上面的代码工作正常,但是如果把

$lines ="Where can I find train station";

这行不通。如何解决这样的问题?是否也可以使用这个词?

$lines ="Where can i and you and me find train station";

任何人都可以建议如何检测相似模式,即使中间有一个或多个单词。

提前致谢

尝试(.*?)匹配和捕获wherefind train station之间的任意字符。

. 匹配任何字符,而 *?lazy quantifier,消耗尽可能少的字符来匹配模式。

这是一个工作示例:

$pattern = "/Where (.*?) find train station/i";

$tests = [
    "Where to find train station",
    "Where can I find train station",
    "Where can i and you and me find train station"
];

foreach ($tests as $test) {
    preg_match($pattern, $test, $matches);
    var_dump($matches);
}

输出:

array(2) {
  [0]=>
  string(27) "Where to find train station"
  [1]=>
  string(2) "to"
}
array(2) {
  [0]=>
  string(30) "Where can I find train station"
  [1]=>
  string(5) "can I"
}
array(2) {
  [0]=>
  string(45) "Where can i and you and me find train station"
  [1]=>
  string(20) "can i and you and me"
}

Try it!