我试图为php preg_match函数构建一个正则表达式,但我对这种逻辑非常糟糕。
我有一个单词列表,即:
“这是我的测试是的” “测试是件好事” “这是一本好书”
目标是了解列表中是否存在特定单词。例如,我想要检索“是”,“测试”或“书籍”这两个词,但只有当它们是完整的单词时,才能找到像“my-test”这样的组合单词才能找到测试......
正则表达式必须测试搜索到的单词是否在空格之间,字符串的开头或结尾。但我找不到正确的方法。
我从这开始:
"/^.+ (yeah|test|book|) .+/"
但我不知道如何进行测试:如果这个词在第一个或最后一个地方,或者这个词是在空格之间......我想到这样的事情:
"/(^.+ |^)(yeah|test|book)( .+|)"
任何帮助都将不胜感激。
提前致谢。
答案 0 :(得分:0)
以下是您可以使用的模式:
$pattern = "/\b(yeah|test|book)/";
\b
适用于word boundaries。
示例:
$a = "this is my-test yeah";
$b = "test is a good thing";
$c = "this is a good book";
preg_match($mine,$a,$m1);
preg_match($mine,$b,$m2);
preg_match($mine,$c,$m3);
var_dump($m1,$m2,$m3);
这将打印:
array(2) {
[0]=>
string(4) "test"
[1]=>
string(4) "test"
}
array(2) {
[0]=>
string(4) "test"
[1]=>
string(4) "test"
}
array(2) {
[0]=>
string(4) "book"
[1]=>
string(4) "book"
}
由于单词边界正在考虑将my-test
视为2个字,因此我建议:
运行正则表达式。
$ a = str_replace(“ - ”,“”,$ a); 的preg_match($矿,$ A,$ M1);
现在这是你得到的输出:
array(2) {
[0]=>
string(4) "yeah"
[1]=>
string(4) "yeah"
}