我正在尝试制定一个正则表达式,如果该字符串单独存在,即不在另一个单词中(但被特殊字符包围也可以),则该正则表达式将允许我在一段文本中找到该字符串。
/\bword\b/i
上面的正则表达式工作正常,并在文本中找到“word”。当我想查找的单词类似于“c++”时,问题就出现了。在这种情况下,它会匹配任何出现的“c”字符。我尝试过转义“+”字符,但没有任何区别。我假设因为“+”是一个非单词字符,所以我可能走错了路,并且使用单词边界不是我应该做的。
所以我想问题是,如何使用正则表达式在一段文本中单独查找字符串,而不管该字符串是字母数字还是包含特殊字符。因此,在下面的文本中,它应该匹配 3 次出现的“c++”:
c++
(c++)
perl/c++/assembly
但它不应该匹配以下内容:
maniac++
c++abc
这样做的目的是让我的脚本可以判断用户的简历/简历中是否存在特定技能。我将其与 PHP 的 preg_match_all() 函数一起使用。
我进行了大量搜索,但无法找到解决方案,希望具有良好正则表达式知识的人可以提供帮助。
最佳答案
试试这个:
/(?<!\w)(c\+\+)(?!\w)/
(?<!\w)
是一个否定的lookbehind子句,这意味着单词字符不应紧接在您的模式之前。 (?!\w)
部分是负向先行,这意味着单词字符不应紧随其后。
希望这有帮助!
关于php - 正则表达式查找文本中包含特殊字符的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14595386/