2012-05-15 5 views
5

私はprevious similar questionのアップデートとしてこれを聞いてみたが、時間がかかりすぎた。CSSのコメントを見つけた正規表現の不要なアスタリスク

は、私は、CSSのコメントに一致するw3.orgで与えられた正規表現を理解しようと

は、なぜ彼らだけではなく、

\/\*[^*]*\*+([^/][^*]*\*+)*\/ 

\/\*[^*]*\*+([^/*][^*]*\*+)*\/ 
----------------^ 

を使用しない、この疑問を持ったのはいつですか?

どちらも同じように動作しています。彼らはなぜそこに余分な星を持っていますか?

  1. のは、この部分を見てみましょう:

    \*+([^/*][^*]*\*+)* 
    -A- --B--  -C- 
    

    正規表現エンジンがその一部を解析し、NO MOREつ星があるか、改行があるまで、すべての星を一致します。ですから、Aが終わると、次の文字は改行でなければなりません。次に、[^/]の代わりに[^/*]を使用した理由は?

  2. 繰り返しキャプチャグループも見てください。

    ([任意のないのchar /または*] [*ではありません、ゼロ以上の文字]、[一つ以上の星])

    それは少なくとも一つ以上の星で終わる文字のグループをキャプチャします。だから、Cはすべての星を取って、次のラウンドでは星を伴わないでBを残します。

    だから、Bの部分は星に会う機会を全く得られません。だから、そこに星を置く必要はないと思うのです。

しかし、正規表現はw3.orgにありますので、私の理解は間違っていると思います。私が逃していることを説明してください。

答えて

3

これはすでにCSS3 Syntax moduleで修正されました:余分なアスタリスクがなくなっていることを

\/\*[^*]*\*+([^/][^*]*\*+)*\/ /* ignore comments */ 

お知らせを、あなたが持っているものに、この式は、同一作ります。

だから、CSS2の文法を書いている間、それは単純に間違いだったようです。私はメーリングリストのアーカイブを掘り出して、関連性のある議論があるかどうか確認しています。

+0

OMG!だから、私は正しかった(そして遅く見つけた)。私は、彼らが正しくなければならないと思って、私の欠点を見つけるために私の心を疲れさせた。私はそれがCSS3で変更されたとは思わなかった。ありがとう。 – Vigneshwaran

+0

はい。私は関連する議論へのあなたのリンクを待っています。 – Vigneshwaran

+0

私は何かを見つけることができません:/ – BoltClock

関連する問題