2012-09-05 60 views
1

我想搜索數以千計的HTML代碼,以查看高度,寬度或任何其他CSS的不良做法。如何找到與正則表達式不匹配的所有內容

例如我想得到所有不帶高度單位的地方,例如應該找到height:40,但height:40px不應該。

爲此,我使用搜索程序代理搜索引擎,在搜索引擎中可以將正則表達式放在文件中進行搜索。

目前我正則表達式是:

(height:)[\s]*[0-9]*\.?[0-9]+(px) 

這個耳目一新就是喜歡height:40px。 (後來我想添加寬度,或其他東西)

我的問題是如何使一個不是最重要的?

或者是否有任何其他好的應用程序來搜索文件的正則表達式?

回答

3

使用負前瞻(?!regex),如:

height:\s*\d+(?:\.\d+)?(?!px|\d) 

\d需要防止匹配回溯替代品。

+0

感謝您的快速反應,但這並不似乎運作良好。我檢查了搜索程序(agentRansack)和在線正則表達式:http://gskinner.com/RegExr/這似乎仍然返回不需要的結果。 – Tal

+0

不起作用,例如height:440px - 它仍然在這個字符串中找到並返回height:44 – Tal

+1

@Tal,因爲\ d +'backtracks。 '(?!px)'檢查以下不是'px',不是'0px'。查看更新。 – Qtax

0

使用排除模式是這樣的:

(?!height:\s*\d+(?:\.\d+)?px)height:\s*\d+(?:\.\d+)? 

考慮你正在使用CSS,你可能要包括其他單位有效的像ptem%,等等......像下面的正則表達式

(?!height:\s*\d+(?:\.\d+)?(?:px|pt|em|%|cm|mm|in|ex|pc))height:\s*\d+(?:\.\d+)? 

您可以測試它在Rubular

相關問題