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

时间:2013-05-13 06:21:17

标签: php regex

我有一系列包含“DOM” * “。Net” *和“C ++”等字符串的字词。我试图通过使用单词边界通配符为某些文本中的每个字符串执行全字匹配。如果将单词读入变量,则看起来像:

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

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

2 个答案:

答案 0 :(得分:2)

由于\b匹配非单词字符(\W),因此无法完成此操作。

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

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

修改:添加了背景,因此您只需输入一次该序列。

答案 1 :(得分:0)

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

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