当前位置: 首页 > 知识库问答 >
问题:

PHP正则表达式检查是否包含特定单词但不包含另一个单词

陈项禹
2023-03-14

如何使用PHP正则表达式检查字符串变量$str是否包含单词“cat”,但不包含单词“dog”。

  • 案例1:$str=“我的宠物:鹦鹉”-

我尝试过这个方法,但我想知道是否有一个正则表达式可以做到这一点

$str = "My pet: dog and cat";
if (preg_match('/(\bdog\b)/', $str) && !preg_match('/(\bcat\b)/', $str)) echo 'TRUE';
else echo 'FALSE';

共有1个答案

孔棋
2023-03-14

你可以使用消极和积极的前瞻:

^(?=.*?cat)(?!.*?dog).*$

要检查完整的单词,请使用\b

^(?=.*?\bcat\b)(?!.*?\bdog\b).*$

RegEx演示

 类似资料:
  • 问题内容: 那么,如何检查字符串中是否包含特定单词? 这是我的代码: 我遇到了错误。 问题答案: 并不像他们所说的那么复杂,选中此选项您不会后悔。 您可以根据需要更改。

  • 问题内容: 我知道可以匹配一个单词,然后使用其他工具(例如grep -v)将匹配项反转。但是,是否可以hede使用正则表达式来匹配不包含特定单词的行? 输入: 码: 所需的输出: 问题答案: 正则表达式不支持逆匹配的说法并不完全正确。您可以使用否定环顾模仿此行为: 上面的正则表达式将匹配任何不包含(sub)字符串’hede’的字符串或没有换行符的行。如前所述,这是不是正则表达式是“好”的(或应该做

  • 我需要一些“包含”和“不包含”的正则表达式。通常我会写: 包含:(.*WORD_A.*)$,不包含:(^((?!WORD_A.*)*)$ 如果单独使用,这很好,但我想写一些可以检测到的东西,比如“包含单词A和单词B”(顺序不相关!)和“包含单词A,但不包含单词B)。 基本上,我希望用户可以做出这样的声明“以单词a开头,包含单词B,但不是C和/或以D结尾”,程序返回真/假。最好的办法是只附加正则表达

  • 问题内容: 这是我的代码,以确定一个单词是否包含任何非字母数字字符: 我想知道正则表达式是否错误。我知道会匹配任何非单词字符。关于我所缺少的任何想法? 问题答案: 将您的正则表达式更改为:

  • 问题内容: 这个问题的答案是 社区的努力。编辑现有答案以改善此职位。它目前不接受新的答案或互动。 考虑: 假设我有上面的代码,编写该语句的正确方法是什么? 问题答案: 您可以使用该函数来查找另一个字符串中另一个字符串的出现: 注意,of的使用是故意的(既不会也不返回期望的结果);返回大海捞针字符串中针线串起始处的偏移量,或者返回boolean值(如果找不到针)。由于0是有效的偏移量,而0是“假”,

  • 问题内容: 伪代码 我正在寻找一个PHP函数,如果单词在文本中存在,该函数将返回true。 问题答案: 您可以根据需要选择几种方法。对于这个简单的示例,可能是最简单,最直接的函数。如果您需要对结果进行处理,则可以选择或。如果您需要使用复杂的图案而不是字符串作为针,您将需要。 strpos()和stripos()方法(stripos()不区分大小写): strstr()和stristr()方法(st