1

高さ、幅、またはその他の CSS の不適切な慣行について、何千もの HTML コードを検索したいと考えています。

たとえば、高さが単位で提供されていないすべての場所を取得したいと思います。たとえば、height:40見つける必要がありますが、見つけるheight:40px必要はありません。

そのために、検索プログラム エージェント ransack を使用しています。このプログラムでは、正規表現を使用してファイル内を検索できます。

現在、私の正規表現は次のとおりです。

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

これは のようなものすべてを見つけますheight:40px。(後で幅などを追加したい)

私の質問は、その上に NOT を作成する方法ですか?

または、正規表現でファイルを検索するための他の優れたアプリケーションはありますか?

4

3 に答える 3

3

否定先読みを使用します(?!regex)。例:

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

\dバックトラッキングの代替が一致しないようにするために必要です。

于 2012-09-05T14:48:46.803 に答える
0

すでにこれを行っているプログラムの使用を検討し、独自のルールを追加してください。一般に、ソースコードを修正する方法は「リンティング」と呼ばれます。したがって、オープンソースでカスタムルールを許可するCSSLintのようなものをすばやく見つけることができます。

https://github.com/stubbornella/csslint/wiki/Rules

http://csslint.net/

于 2012-09-07T14:49:23.077 に答える
0

このように否定先読みを使用します。

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

css を使用していることを考慮して、以下の正規表現のようptに、em、 、 などの有効な単位として他の単位を含めたい場合があります。%

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

Rubularでテストできます

于 2012-09-07T14:45:03.833 に答える