0

我有一个单词数组,其中包含"DOM" * ".Net" * 和"C++"等字符串。我正在尝试通过使用单词边界通配符对某些文本中的每个字符串执行整个单词匹配。如果将单词读入变量,它看起来像:

preg_match("/\b".preg_quote($word)."\b/",...)

这适用于“DOM”之类的示例,但不适用于“.Net”或“C++”,因为在. 在 .Net 的情况下,并且在 C++ 的情况下已经在+处看到。PHP 中的正则表达式中是否有另一种方法可以将.NetC++视为单词边界的“单词”?

4

2 回答 2

2

这无法完成,因为\b匹配非单词字符 ( \W)。

您可以做的是搜索与您定义为单词的某些字符集不匹配的字符,如下所示:

preg_match("/([^a-zA-Z_.+])".preg_quote($word)."\1/",...);

编辑:添加了反向引用,因此您只需键入该序列一次。

于 2013-05-13T06:25:26.033 回答
0

字符类......假设你只想做空格和逗号你会这样做

preg_match("/[, ]".preg_quote($word)."[, ]/",...)
于 2013-05-13T06:24:42.813 回答