que he encontrado el siguiente token en una expresión regular: [\s\S]*?
¿Cuál es la diferencia entre [ s S] *? y. *?
Si entiendo correctamente, la clase de caracteres significa "coincide con un carácter de espacio en blanco o una no está en blanco". Por lo tanto, esto no haría exactamente lo mismo que .*?
Una posible diferencia es que generalmente .
no coincide con las nuevas líneas. Sin embargo, esta expresión regular se escribió en Ruby y se aprobó el m
modifier, lo que significa que el .
hace, de hecho, coincide con las nuevas líneas.
¿Hay alguna otra razón para usar en lugar de [\s\S]*?
.*?
En caso de que ayuda, la expresión regular que estoy mirando aparece dentro de la sprockets library en la constante HEADER_PATTERN en la línea 97. La expresión completa es:
/
\A \s* (
(\/\* ([\s\S]*?) \*\/) |
(\#\#\# ([\s\S]*?) \#\#\#) |
(\/\/ ([^\n]*) \n?)+ |
(\# ([^\n]*) \n?)+
)
/mx
Comparto su especulación. Tal vez, podría ser útil si nos proporciona el regxp completo o el contexto en el que se usa. – sawa
@sawa Esa es una buena idea, gracias. He editado mi pregunta. –
Gracias por agregar la expresión regular. Ahora, parece aún más extraño porque está usando 'm', y está atando para tratarlo usando' [^ \ n] '. – sawa