PHP正则表达式-检测字符串是否包含单词但不包含其他单词


PHP Regular Expression - Detect if string contains a word but not within another

我有一个用PHP编写的系统,它将来自多个数据库的记录聚合到一个。当这样做时,我需要检测每个记录是否为ABNORMAL,如果是,则将其标记为如此。

要做到这一点,我需要preg_match()的模式,所以如果给定的字符串包含NORMAL但不包含ABNORMAL,它将返回false。给定的字符串可以包含多行。

我的问题是字ABNORMAL 包含NORMAL

有人能帮忙吗?

使用文字边界字符'b:

preg_match("|'bNORMAL'b|", $subject);

注意它是区分大小写的,不区分大小写的版本是:

preg_match("|'bNORMAL'b|i", $subject);

如果你可以控制你的数据库,你可能想要使用0和1(或者至少N和A)而不是NORMAL和ABNORMAL