自定义以非单词字符开头或结尾的单词边界


Custom definition for word boundary for words that begin or end with non-word characters

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

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

对于像"DOM"这样的例子可以很好地工作,但不适用于"。Net"或"c++",因为字边界也见于。在。net中是,在c++中是+。在PHP的正则表达式中是否有另一种方法来处理 ?Net c++ 作为单词边界的"单词"?

不能这样做,因为'b匹配非单词字符('W)。

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

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

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

字符类…比如说你只想用空格和逗号你可以这样写

preg_match("/[, ]".preg_quote($word)."[, ]/",...)