使用正则表达式将 CSS ID 或类替换为 PHP


Using regex replace CSS ID or class by PHP

我有以下CSS代码:

#np-toolbar-l a{ position: relative; padding: 0px 8px; line-height: 30px; display: inline-block; font-size: 12px; }
#np-toolbar-l a:hover{ background-color: #EFEFEF; opacity: 0.7; }
#np-toolbar-l a *:hover{ cursor: pointer; }

/** Icon */
#np-toolbar [class^="icon-"]{ font-size: 18px; vertical-align: middle; margin-right: 5px; }

我正在尝试将np-toolbar替换为另一个 ID,

我只想匹配np-toolbar而不是np-toolbar-l或类似的东西,

以下是有关如何从CSS捕获所有ID的教程:

#-?[_a-zA-Z]+[_a-zA-Z0-9-]*(?=[^}]*'{)

来源:正则表达式以匹配 CSS 文件中的 ID?

我找不到如何通过正则表达式搜索"compelete ID",

这是我的例子:(它仍然会算np-toolbar-l

/(?<=(#|'.))(np-toolbar)+(?=( |:||'[))/

编辑:嗯,只是在它后面添加了一些符号,

它看起来像我正在寻找的答案

/(?<=(#|'.))(np-toolbar)+(?=( |:|'[|'{|'.|,))/

如果您正在寻找特定的 ID,您可以大大简化您的正则表达式:

/(#np-toolbar)(?=[{.,'s])/g

这应该在 CSS 中出现的任何位置找到 ID。它首先完全匹配 ID,然后只允许{(用于开始样式)、,(用于列表选择器)、.(用于附加类)或空格/制表符/换行符,防止它匹配 ID 如 np-toolbar-1 等。

也许你可以试试这个正则表达式:

/#np-toolbar(?![-'w])/

这意味着:如果包含不以"-"或任何 ''w 符号结尾,则匹配所有"#np 工具栏"包含