regex 匹配字符串中的整个单词,而不会出现意外匹配[重复]

cbjzeqam  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(131)

此问题在此处已有答案

Regex match entire words only(7个答案)
18天前关门了。
解析一个字符串命令数组,我需要知道一个字符串是否包含特定的关键字。
我知道这听起来很简单,但是当命令关键字也可能是另一个单词的一部分时,问题就来了。
例如:

CHECKSOUND
SOUND
CHECK

字符串
因此,我需要检查当前行是否有SOUND、SOUND或RIGHT命令。
如果我使用类似于:

if(stristr($line,'SOUND') == true)


然后它可能会在SOUND之前找到CHECKSOUND,因此无法正确解析。

问题

有没有一种方法可以只找到整个单词(如SOUND)的出现,如果发现SOUND是另一个单词(如SOCKSOUND)的一部分,则忽略它?
我肯定我在这里错过了一些简单的东西。

nlejzf6q

nlejzf6q1#

你可以使用正则表达式来轻松实现这个目标。
preg_match文档中的示例2:

/* The \b in the pattern indicates a word boundary, so only the distinct
 * word "web" is matched, and not a word partial like "webbing" or "cobweb" */
 if (preg_match("/\bweb\b/i", "PHP is the web scripting language of choice.")) {
     echo "A match was found.";
 } else {
     echo "A match was not found.";
 }

字符串
请注意,上面的示例使用了i修饰符,这使得搜索“web”不区分大小写。

相关问题