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

标签 php regex

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

/\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/

相关文章:

php - 如何从 Facebook 登录获取用户详细信息?

php - 使用 Python 以编程方式检查 PHP 是否已安装

php - 编辑按钮是表的未定义 ID

regex - sed组匹配

java - 使用另一个模式字符串掩码字符串

r - 如何使用 R 在大字符串中提取模式(开始和结束)?

php - MySQL 用户和文件夹

java - TopDesk 概述

python - 当感兴趣的列缺少单元格时,如何使用 difflab 创建人工键列来合并两个数据集?

c# - 删除括号内的空格(引号内的文本除外)