2012-05-15 17 views
5

Myślałem, że zapytam o to jako aktualizację mojego previous similar question, ale stała się ona zbyt długa.Niepotrzebna gwiazdka w wyrażeniu regularnym, która znajduje komentarz CSS

starałem się zrozumieć regex podane w w3.org pasujący css komentarze i mam te wątpliwości

Dlaczego używać

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

zamiast tylko

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

?

Obie działają podobnie. Dlaczego mają tam dodatkową gwiazdę?

  1. Spójrzmy na tej części:

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

    silnik Regex będzie analizować częścią i dopasować wszystkie gwiazdy, dopóki nie ma więcej gwiazdek lub jest przerwa linia. Tak więc, gdy A zostanie ukończone, następna postać musi być przerywaną linią lub cokolwiek innego, co nie jest gwiazdą. Dlaczego więc zamiast używać [^/] użyli [^/*]?

  2. Zobacz także powtarzającą się grupę przechwytującą.

    ([każdy jeden char to nie/lub *] [zero lub więcej znaków, że to nie *] [jeden lub więcej gwiazdek])

    przechwytuje ona grup znaków kończących się conajmniej jednego lub większej liczby gwiazd. Więc C weźmie wszystkie gwiazdy pozostawiając B bez gwiazdek do dopasowania w następnej rundzie.

    Więc część B nie będzie miała szansy na spotkanie z żadną gwiazdą. Dlatego uważam, że nie ma potrzeby umieszczania tam gwiazdy.

Ale ten regex jest w w3.org, więc myślę, że moje zrozumienie może być złe. Proszę wyjaśnij, czego mi brakuje.

Odpowiedz

3

ten został już rozwiązany w CSS3 Syntax module:

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

Zauważ, że obcy gwiazdka nie ma, co ten wyraz identyczną co masz.

Wygląda na to, że był to po prostu błąd z ich strony podczas pisania gramatyki dla CSS2. Przeszukuję archiwa list dyskusyjnych, aby sprawdzić, czy nie ma tam jakiejkolwiek dyskusji, która mogłaby być istotna.

+0

OMG! Tak więc miałem rację (i późno, aby się dowiedzieć.) Myślałem tylko, że muszą mieć rację i wyczerpały mój umysł, próbując znaleźć to, czego mi brakuje. Nie sądziłem, że zostałby zmieniony w CSS3. Dzięki. – Vigneshwaran

+0

Tak. Czekam na twój link do każdej odpowiedniej dyskusji. – Vigneshwaran

+0

Nie mogę znaleźć niczego:/ – BoltClock

Powiązane problemy