使用regex-php匹配给定单词中的字符串或子字符串


Match a string or substring from a given word using regex php

我有类似Food & Drinks的文本。我需要将这个词与fooddrinksseafood匹配。。。等等。有人能帮我拿这个吗。提前谢谢。

$res = "campbell italian seafood. Italian Food of 2005 Award. Some drinks are very tasty";
$pattern = '/^((?!Food & Drinks).)*$/s';
    if(preg_match_all($pattern, substr($res,10), $matches, PREG_OFFSET_CAPTURE)){
        echo ++$count;
    }else{
        echo $count;
    }

提前谢谢。

对于问题中的特定示例,以下内容将与seafoodFooddrinks匹配

/'w*(?:Food|Drinks)'w*/i

如果你不在乎匹配整个单词seafood,只想匹配其中的食物部分(如果你只是计算匹配的次数,这就是你所需要的),你可以简单地使用:

'/Food|Drinks/i'

我不知道你从哪里得到字符串Food & Drinks,也不知道其他可能的搜索词是什么样子的,所以我只能建议你这个问题中的具体例子。但要从Food & DrinksFood|Drinks,可以使用str_replace


以下是在PHP中实现的示例:

$str = 'Food & Drinks';
$terms = str_replace(' & ', '|', $str);
$res = "campbell italian seafood. Italian Food of 2005 Award. 
        Some drinks are very tasty";
$pattern = '/'w*(?:'.$terms.')'w*/i';
preg_match_all($pattern, $res, $matches);
echo 'Count: '.count($matches[0]);
print_r($matches[0]);

输出:

Count: 3
Array ( [0] => seafood [1] => Food [2] => drinks )