2012-05-15 20 views
5

pensé que pedir esto como una actualización de mi previous similar question pero se hizo demasiado largo.asterisco innecesario en expresiones regulares que encuentra comentario CSS

yo estaba tratando de entender una expresión regular dada en w3.org que coincide con los comentarios css y tiene esta duda

¿Por qué utilizan

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

en lugar de sólo

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

?

Ambos están trabajando de manera similar. ¿Por qué tienen una estrella extra allí?

  1. Veamos esta parte:

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

    motor de expresiones regulares analizará la parte A y combinar todas las estrellas hasta que no hay más estrellas o hay un salto de línea. Entonces, una vez que A termina, el siguiente personaje debe ser un salto de línea o cualquier otra cosa que no sea una estrella. Entonces ¿por qué en lugar de utilizar [^/] utilizaron [^/*]?

  2. estudian también el grupo de captura de repetición.

    ([cualquier uno carbón que no es/o *] [cero o más caracteres que no es *] [una o más estrellas])

    Captura grupos de caracteres que termina y por lomenos una o más estrellas. Entonces C tomará todas las estrellas que salen de B sin estrellas para unir en la siguiente ronda.

    Así que la parte B no va a tener la oportunidad de conocer a ninguna estrella en absoluto. Por eso creo que no hay necesidad de poner una estrella allí.

Pero esa expresión regular está en w3.org así que supongo que mi comprensión puede ser incorrecta. Por favor explica lo que me estoy perdiendo.

Respuesta

3

Esto ya se ha corregido en la CSS3 Syntax module:

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

en cuenta que el asterisco extraña se ha ido, por lo que esta expresión idéntica a lo que tienes.

Parece que fue simplemente un error de su parte al escribir la gramática de CSS2. Estoy cavando los archivos de la lista de correo para ver si hay alguna discusión que pueda ser relevante.

+0

OMG! Así que tenía razón (y tarde para descubrirlo). Solo pensé que debían estar en lo cierto y agotar mi mente tratando de encontrar lo que me estaba perdiendo. No pensé que hubiera sido cambiado en CSS3. Gracias. – Vigneshwaran

+0

Sí. Estoy esperando su enlace a cualquier discusión relevante. – Vigneshwaran

+0

Parece que no encuentro nada:/ – BoltClock

Cuestiones relacionadas