php - 正则表达式 (?<!-) 是什么意思

标签 php regex pcre

我试图理解一段代码并遇到了 PHP 的 preg_replace 函数中使用的这个正则表达式。

'/(?<!-)color[^{:]*:[^{#]*$/i'

这个位... (?<!-) 没有出现在我的任何 reg-exp 手册中。请问有人知道这是什么意思吗? (谷歌不返回任何东西——我认为符号在谷歌中不起作用。)

最佳答案

?<!在括号组的开头是 negative lookbehind .它断言 color 这个词(严格来说,引擎中的 c)前面没有 -。性格。

因此,对于更具体的示例,它将匹配 color在字符串中:

color
+color
someTextColor

但它会在类似 -color 的情况下失败或 background-color .另请注意,引擎在技术上不会“匹配”c 之前的内容。 , 它只是断言它不是连字符。根据上下文,这可能是一个重要的区别(illustrated on Rubular with a trivial example;请注意,匹配最后一个字符串中的 b,而不是前面的字母)。

关于php - 正则表达式 (?&lt;!-) 是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10922458/

相关文章:

python - 正则表达式 - 在字符串中查找大写单词

正则表达式:如果模式以/开头,则不匹配

php - Laravel:表单文件上传失败 - 检测到不正确的类型

Php mysql 连接到 Cpanel 数据库

php - 从不同的 mysql 数据库表中选择

python - 正则表达式仅捕获括号内第一次出现的情况

php - 在 Magento 中包含和使用 php 类的最佳方式

javascript - 使用正则表达式从字符串中提取数字

regex - 仅当字符串中有小写字母时才匹配所有大写单词,使用一个正则表达式

nginx 从源码编译