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";
任何人都可以建议如何检测相似模式,即使中间有一个或多个单词。
提前致谢
尝试(.*?)
匹配和捕获where
和find 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"
}
$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";
任何人都可以建议如何检测相似模式,即使中间有一个或多个单词。
提前致谢
尝试(.*?)
匹配和捕获where
和find 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"
}