2011-05-23 72 views
0

我有一個正則表達式的問題,我需要一個正則表達式來讀取具有屬性的類名稱以及使用ID和標記樣式的相同事物,每個匹配必須有一個塊;類名(或類名)與他們的風格!如何使用正則表達式讀取文本文件中的類,標識或標籤樣式?

#myId { 
    margin: 10px 8px 9px 0; 
} 

.myClass1 { 
    margin: 10px -8px 9px 0; 
    padding: 10px 8px 9px 0; 
} 

-my-tag { 
    margin-down  :-10px; 
    margin-left: 10px; 
    margin-right: 10px; 
} 

-my-tag #my-id{ 
    margin-down  :-10px; 
    margin-left: 10px; 
    margin-right: 10px; 
} 
#_myI4D6 {margin:10px;} 

.myclass.myclass_too { 
} 
.myclass .myclass_too {         
    margin-up:10px; 
    bac: url "(../../image/p_n-G.png)"; 
    Margin: 10px 0 10PX 10Px; 
    } 

#myID .myclass:first-child my-tag { 
    margin:  10px; 
} 

.emptyclass { 
} 
.classname 
tagnam { 
    padding: 40px 999px  ; 
} 

.className #myid 
{ 
    maRgin: 10px 0 10px 10px; 
} 

第一場比賽必須是:

解釋我的問題,正則表達式必須造型以下語法匹配

#myId { 
     margin: 10px 8px 9px 0; 
    } 

在先進的,如果你能解決註釋問題,也許類評論如:

/* #myId { 
     margin: 10px 8px 9px 0; 
    } */ 

我不需要匹配它。

注意:我使用C#編寫了一個程序,並且請注意空格問題(選項卡,換行符和空格)。

+2

你有什麼試過?什麼工作?什麼沒有? (「爲我寫完整的代碼」在這裏被認爲有些粗魯) – Piskvor 2011-05-23 12:14:20

+2

正則表達式可能不是這種情況下工作的最佳工具。你必須非常小心打開和關閉括號。例如,這段CSS怎麼樣:'p:before {content:'}'; ''? – 2011-05-23 12:15:10

+0

閱讀此文章:http://www.smashingmagazine.com/2008/08/18/7-principles-of-clean-and-optimized-css-code/ – diEcho 2011-05-23 12:16:26

回答

5

這似乎是你試圖在C#中實現CSS解析。我無法幫助你使用正則表達式,但我強烈建議你避免自己實現這樣的事情,並使用現有的CSS解析庫,並節省大量的工作量。

+0

+1我完全同意這種觀點;我只是想我會直接回答這個問題,並給出一個匹配規則的正則表達式:) – 2011-05-23 12:24:07

+0

Everyone:go here http://stackoverflow.com/questions/366028/what-is-a-good-cc-css-parser ;和http://joysofprogramming.com/install-libcs​​s-parser-pp0-ubuntu/ – sehe 2011-05-23 12:24:50

+0

是的,你說最好的,但如果你知道最好的lib,我可以下載,它對我的​​項目,它將是太棒了。 非常感謝。 – 2011-05-23 13:07:30

1

嘗試這與Regex.Matches

Regex.Matches(cssString, @"[^{]+\{[^}]+?}"); 

每場比賽應該是一個完整的塊。

從那裏你可以得到選擇從比特到每個比賽中的第一個'{'。

警告!

由於Samir Talwar直接評論你的問題 - 正則表達式方法尤其會與嵌套在樣式規則中的'{'和'}'字符發生衝突;因爲正則表達式無法處理上下文。

您可能希望看看基於文法的解決方案Antlr(陡峭的學習曲線,但已經有css 2.1 grammar if you search down this page);或者的確如其他人所建議的,解析器是專門爲解析CSS而創建的。

+0

我會盡量表達你的感謝,^ _ ^。 – 2011-05-23 13:10:16

相關問題