曾經有這個,但失去了它。有人可以協助嗎?需要一個正則表達式來修剪所有值的CSS文件,只是保持選擇器
它是一個簡短的表達式,我粘貼到TextMates搜索替換修剪一個CSS文件以這種方式。
它查找{}之間的所有文本並將其刪除。
selector { value: blah; }
變爲..
selector {}
它,所以我可以清理一個CSS文件進行準備從頭主題化。
感謝
曾經有這個,但失去了它。有人可以協助嗎?需要一個正則表達式來修剪所有值的CSS文件,只是保持選擇器
它是一個簡短的表達式,我粘貼到TextMates搜索替換修剪一個CSS文件以這種方式。
它查找{}之間的所有文本並將其刪除。
selector { value: blah; }
變爲..
selector {}
它,所以我可以清理一個CSS文件進行準備從頭主題化。
感謝
要找到
>>> re.sub("(\w+)\s*\{.*?\}","\\1 {}","""selector { value: blah; }""")
'selector {}'
{}並刪除它,下面可以工作(蟒蛇)之間的所有文字,但如果你需要一個複雜的,你寧願尋找的CSS解析器。
模式「{。*?}」的意思是「花括號後跟可能最短的字符串,緊接着是大括號」。
如果您使用的是不懂貪婪和非貪婪的正則表達式匹配器(「*」是貪婪的,「*?」是非貪婪的),您可以使用類似「{[^} ] *}「,這意味着」大括號後緊跟着一個緊接大括號的零個或多個字符,緊接着是一個緊密的大括號「。
請注意,這並非萬無一失 - 如果您將花括號作爲定義的一部分關閉,則會中斷。唯一的解決方法是使用真正的.css解析器。
如果您想要在大括號之間捕獲數據,您需要在花括號內部添加圍繞模式部分的括號,例如:「{(。*?)}」,它將捕獲除大括號。
看起來類似於我以前運行過的東西,但實際上並不起作用。我運行它,它什麼都沒有返回。 – 2010-02-08 16:23:19
@Gavin:這個答案中的表達式只是匹配開始和結束括號之間的所有內容。我的假設是,如果您可以匹配它,那麼您可以輕鬆地替換與{}匹配的內容,但這取決於您使用的工具。你說你在使用textmate,但是在問題中不清楚你是否需要textmate特定的答案。如果是這樣,你可能想要添加textmate作爲標籤,並明確問「如何我替換textmate中的這個expressin」 – 2010-02-08 16:55:50
@Gavin:我不使用textmate,從掃描文檔的猜測是,你需要把括號圍繞要替換的模式部分(例如:{(。*?)}),然後替換爲空字符串。 – 2010-02-08 16:57:43
如果樣式表甚至是非常複雜的,那麼CSS解析器是非常必要的。在樣式規則中,無論是在字符串中(在規範中*定義爲不需要分隔符),@media組以及許多特定於瀏覽器的黑客行爲,在樣式規則中可能會出現大括號。 – eyelidlessness 2010-02-08 16:01:09
是的,絕對正確。正確的答案是css解析器,但是我之前沒有使用css解析器,所以很難向OP建議哪一個是合適的。 – YOU 2010-02-08 16:15:54
任何人都知道一個合適的CSS解析器?已經googld'無濟於事。 – 2010-02-08 16:26:37