我正在尝试制定一个正则表达式,允许我在一段文本中找到一个字符串,如果该字符串本身存在,即不在另一个单词内(但由特殊字符包围即可)。
/\bword\b/i
上面的正则表达式工作正常,并在文本中找到“单词”。当我想要找到的词是“c ++”之类的问题时,问题就出现了。在这种情况下,它匹配任何出现的“c”字符。我试过逃避“+”字符,但它没有任何区别。我假设因为“+”是一个非单词字符,我可能会走错路线并使用字边界不是我应该做的。
所以我想问题是,我怎样才能使用正则表达式在一段文本中找到一个字符串,无论字符串是字母数字还是包含特殊字符。因此,在下面的文本中,它应该匹配“c ++”的3个出现:
c++
(c++)
perl/c++/assembly
但它不应与以下内容相匹配:
maniac++
c++abc
这是为了让我的脚本可以判断用户的简历/简历中是否存在特定技能。我正在使用PHP的preg_match_all()函数。
我已经做了很多搜索,但无法提出解决方案,希望具有良好正则表达式知识的人可以提供帮助。
答案 0 :(得分:2)
试试这个:
/(?<!\w)(c\+\+)(?!\w)/
(?<!\w)
是一个负面的lookbehind子句,这意味着一个单词字符不应该紧跟在你的模式之前。 (?!\w)
部分是负向前瞻,这意味着单词字符不应该立即跟随。
希望这有帮助!