En Vim, la clase de caracteres \s
coincide con cualquier carácter de espacio en blanco. Cuando estoy usando esos caracteres especiales en grupos, por ejemplo [\s\w]
, no coincide con ningún espacio en blanco o carácter de palabra, sí coincide con s
o w
.
¿Cómo se usan las clases de caracteres dentro de los grupos?
regular-expression
John HK
fuente
fuente
[[:space:][:alnum:]_]
se puede usar para aproximar la colección de\s
y\w
.Respuestas:
Eso no es un grupo, es un rango, y en Vim no puedes usar clases de caracteres (aunque es posible en otras implementaciones de expresiones regulares, por ejemplo, en python ). Tendrás que usar una alternancia en su lugar:
o:
(o la solución propuesta por Peter Lewerin ).
fuente
\s
en una clase de caracteres. La implementación de expresiones regulares de Vim ha tomado esa decisión, pero otras implementaciones le permiten usar[\s]
.A diferencia de algunas implementaciones de motores de expresión regular, Vim's no parece admitir esa notación (
[\s\w]
) en colecciones. Sin embargo, se pueden usar expresiones de clase de caracteres POSIX .[:blank:]
es el mismo que\s
.[:space:]
coincide con una mayor cantidad de caracteres de espacio en blanco que\s
hace, y parece ser equivalente a\_s
.[:alnum:]
aproxima\w
, pero no coincide con el guión bajo (_
).Entonces la colección que deseabas podría escribirse como
[[:blank:][:alnum:]_]
o[[:space:][:alnum:]_]
.No he verificado esto probando, pero está documentado en
:h regexp
,:h /character-classes
, y:h /collection
.Nota de portabilidad: en otros motores regex,
\s
normalmente es lo mismo que[:space:]
(o\_s
) en Vim.fuente