En expresiones regulares, ¿cuál es la diferencia entre [: blank:], [: space:] y \ s-?

7

He estado jugando rxúltimamente y me di cuenta de que hay (al menos) 3 formas diferentes de indicar espacios en blanco en las expresiones regulares.

  1. [:blank:]
  2. [:space:]
  3. \s-

¿Cuáles son las diferencias entre cada uno de ellos? ¿Depende del modo mayor?

Malabarba
fuente
3
¿Qué dice Emacs? ([:space:]Y\s-son los mismos.)C-h i, Manual Elisp,C-s [:space].
Dibujó
"Jugando";)
Sean Allred

Respuestas:

7

La [:blank:]clase de caracteres solo coincide con los caracteres SPC y TAB. Los otros dos coinciden con espacios en blanco basados ​​en la tabla de sintaxis activa.

No parece haber una diferencia entre [:space:]y \s-. El último es un ejemplo de lo general \ s código de patrón para la coincidencia sobre la base de una clase de sintaxis.

glucas
fuente
1
Acabo de hacer una prueba rápida modificando la tabla de sintaxis en un búfer para dejar espacios en blanco de caracteres adicionales. Probando con regexp-builderpuedo confirmar eso [:space:]y \s-unir los caracteres adicionales como espacios.
glucas