2012-03-12 12 views
0

私はCSSファイルから規則を抽出する正規表現を見つけようとしています。スタイル宣言、単にルール(セレクタ)は必要ありません。私は私の正規表現は、次の項目と一致することを期待する。この例ではRegExはCSSファイルからセレクタのみを抽出しますか?

body, p, table, td, th, br, div, span { 
    /* Some styles here */ 
} 

/* This is a test */ 
h1 { 
    /* Some styles here */ 
} 

a:hover { 
    /* Some styles here */ 
} 

-moz-any(input[type="text"], input[type="radio"]) { 
    /* Some styles here */ 
} 

:ボディ、P、テーブル、TD、目、BR、DIV、スパンを、H1ここで私が働いているサンプルのCSSファイルです、a:hover、-moz-any(入力[type = "text"]、入力[type = "radio"])

これは私の正規表現の試みです。それが動作する間、/ *これはテスト* /コメントであり、中括弧も含みます。理想的にそれらは省略されるでしょう。

(}{0,})([^}]*)({) 

これについてのお手伝いがあれば、大歓迎です。事前に多くの感謝!

これは素晴らしいCSSファイルではないことにご理解ください。それは単に私が解析をテストするために思いついたテストファイルです。

+4

ように、そのマークされますが、あなたが適切なパーサーを使用してオフに優れている、複雑です。 – Qtax

+1

4つのこと:1)ルールとセレクタは同じものではありません。あなたはセレクタだけを探しています。 2) ':-moz-any()'は擬似クラスなので、その前に ':'が必要です。 3)正規表現をどの言語で実装していますか? JavaScript正規表現の場合、関連する用語でこのサイトを検索できる既存の質問があります。 4)より複雑なスタイルシートで作業すると、正規表現で非常に遠くになることはないでしょう。 – BoltClock

+0

ボルト - 私の用語が間違っている可能性があることを理解しています。私は決してCSSの専門家ではありません。私は-mozを知りませんでした。いずれにしても、私はそれをつかみたいと思う。また、私はC#でこれを実装しています。 Qtax - RegExがこれを複雑にする原因は何ですか?私のRegEx-Fooは本当に悪いです:) –

答えて

0

私はRegExを使用して解決策を得ることができませんでした。したがって、Qtaxのアドバイスに従い、CSS3文法で適切なパーサーを使用しました。

私はこの質問を回答としてマークしています。

@Qtax - あなたは答えとしてあなたのコメントを追加する場合、私は正規表現でこれを行うには「正しい」答え:)

+1

CSS3文法を定義しましたか?適切なパーサーとしてあなたの選択は何ですか? – sgtz

0

この粗正規表現は、サブパターン2のセレクタをキャッチします。これはパーサではないため、コメント内のセレクタもキャッチします。

限り、あなたは常にあなたの例のように、あなたの宣言と同じライン上の開口部squggleyブラケットを持っているよう
(\s|^)(.*?)\s*{ 
1

(.+) { 

私はあなたを取得する方法を示していますいくつかのコードを与えることができますあなたがそれを必要とするならば、グループ。あなたが使っている言語を教えてください。私は試して遵守します!

関連する問題