正则表达式查找文本中包含特殊字符的字符串


Regex to find string containing special characters in text

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

/'bword'b/i

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

所以我想问题是,我如何使用正则表达式在一段文本中查找字符串,无论字符串是字母数字还是包含特殊字符。因此,在以下文本中,它应该与"c++"的 3 次出现相匹配:

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

但它不应在以下方面匹配:

maniac++
c++abc

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

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

试试这个:

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

(?<!'w)是一个否定的后视子句,这意味着单词字符不应紧跟在您的模式之前。 (?!'w)部分是负面的展望,这意味着单词字符不应紧随其后。

希望这有帮助!