2

我正在尝试制定一个正则表达式,它允许我在一段文本中找到一个字符串,如果该字符串单独存在,即不在另一个单词中(但被特殊字符包围是可以的)。

/\bword\b/i

上面的正则表达式工作正常,并在文本中找到“单词”。当我想找到的词是“c++”之类的词时,问题就来了。在这种情况下,它匹配任何出现的“c”字符。我试过转义“+”字符,但没有任何区别。我假设因为“+”是一个非单词字符,我可能走错了路,使用单词边界不是我应该做的。

所以我想问题是,我怎样才能使用正则表达式在一段文本中找到一个字符串,它自己,不管字符串是字母数字还是包含特殊字符。因此,在以下文本中,它应该匹配“c++”的 3 次出现:

c++
(c++)
perl/c++/assembly

但它不应该匹配以下内容:

maniac++
c++abc

这是为了让我的脚本可以判断用户的简历/简历中是否存在特定技能。我将它与 PHP 的 preg_match_all() 函数一起使用。

我已经做了很多搜索,但无法提出解决方案,希望具有良好正则表达式知识的人可以提供帮助。

4

1 回答 1

2

试试这个:

/(?<!\w)(c\+\+)(?!\w)/

(?<!\w)是一个否定的lookbehind子句,这意味着单词字符不应该紧接在您的模式之前。该(?!\w)部分是负前瞻,这意味着单词字符不应立即跟随。

希望这可以帮助!

于 2013-01-30T01:55:10.457 回答