PHP正则表达式 - 检测字符串是否包含一个词但不在另一个中
问题描述:
我有一个用PHP编写的系统,它将来自多个数据库的记录聚合为一个。当我这样做时,我需要检测每条记录是否为ABNORMAL
,如果是,则将其标记为如此。PHP正则表达式 - 检测字符串是否包含一个词但不在另一个中
要做到这一点,我需要为preg_match()
的模式,所以如果给定的字符串包含单词NORMAL
但不ABNORMAL
它会返回false。给出的字符串可能在多行。
我遇到的问题是,这个词ABNORMAL
包含字NORMAL
。
任何人都可以帮忙吗?
答
使用Word boundry字符\b
:
preg_match("|\bNORMAL\b|", $subject);
注意,它是区分大小写,不区分大小写的版本是这样的:
preg_match("|\bNORMAL\b|i", $subject);
但如果你可以控制你的数据库,您可能需要使用0和1(或至少N和A),而不是NORMAL和ABNORMAL。
如果第一次搜索返回“false”,为什么不先搜索“ABNORMAL”,然后搜索“NORMAL”? – Blender