我试图理解一段代码并遇到了 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 - 正则表达式 (?<!-) 是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10922458/