我有一个包含字符串的单词数组,如"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)."[, ]/",...)