我正在尝试了解一段代码,并遇到了
PHP的preg_replace函数中使用的这个正则表达式.
'/(?<!-)color[^{:]*:[^{#]*$/i'
这个位…(?<! - )
没有出现在我的任何注册手册中.任何人知道这是什么意思? (Google没有返回任何内容 – 我不认为符号在谷歌中工作.)
?<!在一个括号组的开始是一个
negative lookbehind.它断言,颜色字(严格来说,引擎中的c)之前没有一个字符.
所以,对于一个更具体的例子,它将匹配字符串中的颜色:
color +color someTextColor
但是它会失败,如 – 彩色或背景颜色.还要注意,引擎在技术上不会匹配c之前的任何一个,它只是断言它不是连字符.这可能是一个重要的区别取决于上下文(illustrated on Rubular with a trivial example;注意,只有最后一个字符串中的b匹配,而不是前面的字母).