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

时间:2015-02-03 04:53:09

标签: php regex preg-replace

我有以下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-]*(?=[^}]*\{)

来源:Regex to match ids in a css file?

我无法找到如何通过正则表达式搜索“竞争ID”,

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

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

编辑:嗯,jsut在其后面添加了一些符号,

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

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

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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

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

表示:匹配所有&#34; #np-toolbar&#34;夹杂物如果包含并未以&#34; - &#34;或任何\ w符号