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

时间:2013-01-30 01:50:45

标签: php regex

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

/\bword\b/i

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

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

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

但它不应与以下内容相匹配:

maniac++
c++abc

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

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

1 个答案:

答案 0 :(得分:2)

试试这个:

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

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

希望这有帮助!