2014-09-23 25 views
-1

例原CSS:正則表達式匹配的CSS規則

.sk-hybrid{} 
.sk-hybrid header > .row, 
.sk-hybrid > #content.row, 
.sk-hybrid footer > .row{} 
.sk-border-radius-sm{} 
.sk-gradient-gray-sm{} 

我想的preg_replace的.sk - 無論{所有實例.sk - 無論-I {和相同的所有實例這些條款後跟一個空格,如**。sk-whatever ** to **。sk-whatever-i **

基本上我想要實現的是編寫一些PHP代碼來解析我的CSS文件將「-i」添加到我的所有實例.sk-someword類。所以我可以將!重要聲明附加到規則集,但這很簡單。

我需要regX只添加「-i」。請注意.sk-whatever可能有特殊字符。

.sk-some-class-term(space) 

.sk-some-class-term{ 

我這樣的笨蛋,當談到至REGx。我很確定其他人可以很容易地寫這個。我不能。請幫助? :(

我的例子CSS的結果應該是:

.sk-hybrid-i{} 
.sk-hybrid-i header > .row, 
.sk-hybrid-i > #content.row, 
.sk-hybrid-i footer > .row{} 
.sk-border-radius-sm-i{} 
.sk-gradient-gray-sm-i{} 
+0

'!important'在很大程度上鼓勵在CSS。你想達到什麼作爲最終結果? – 2014-09-23 15:35:46

+0

我打算這樣做,當您將一個類.sk-border-radius添加到某個元素時,它將使我無法輸入所有webkit的東西。這很乏味。但有時CSS繼承的特殊性會阻止我這樣做。這就是我使用.sk-border-radius-i的地方,因爲我知道這是我的類的一個版本,它有!重要的聲明。不過,我不打算用手重寫我的(經常更新的,介意你)常見的樣式表。因此PHP解析。 – user1462610 2014-09-23 16:31:37

回答

1

此正則表達式應該符合您的需求:

^(\.sk-\w+(?:[^\{\s,>]+)) 

RegEx Demo

說明

  • ^比賽開始串
  • (開始捕捉組
    • \.sk-\w+匹配.sk-其次是字母或數字
    • (?:開始非捕獲組
      • [^\{\s,>]+匹配任何非空白,非{,非,或非>字符
    • )結束非捕獲組
  • )結束捕獲組
+0

謝謝!奇蹟般有效。 – user1462610 2014-09-23 16:28:37

0

PHP做你所要求的,其中$cssString設置爲你的CSS。

$cssString = preg_replace ('(\.sk-\w+(?:[^\{\s,>]+))', '$1-i', $cssString); 

但如果你是在Linux上運行,只是用sed

sed 's/^(\.sk-\w+(?:[^\{\s,>]+))/$0-i/g' example.css 
+0

只好用'$ 0 -i'來代替它。我不知道它是如何從另一個線程讀取的,但preg_replace代碼很好地工作。隊友的歡呼聲! – user1462610 2014-09-23 16:33:10

+0

更新了代碼,對我來說看起來很奇怪,它是$ 0,但是如果它工作的很好:) – Jegsar 2014-09-23 21:54:36