No Vim, a classe de caractere \s
corresponde a qualquer caractere de espaço em branco. Quando estou usando esses caracteres especiais em grupos, por exemplo, [\s\w]
ele não corresponde a nenhum espaço em branco ou caractere de palavra, ele corresponde a s
ou w
.
Como alguém usa classes de caracteres dentro de grupos?
regular-expression
John HK
fonte
fonte
[[:space:][:alnum:]_]
pode ser usado para aproximar a coleção de\s
e\w
, no entanto.Respostas:
Isso não é um grupo, é um intervalo, e no Vim você não pode usar classes de caracteres (embora isso seja possível em outras implementações de regex, por exemplo, em python ). Você precisará usar uma alternância :
ou:
(ou, a solução proposta por Peter Lewerin ).
fonte
\s
em uma classe de caracteres. Por acaso, a implementação de regex do Vim fez essa escolha, mas outras implementações permitem que você o use[\s]
.Ao contrário de algumas implementações de mecanismos de expressão regular, o Vim não parece suportar essa notação (
[\s\w]
) nas coleções. Porém, pode-se usar expressões de classe de caracteres POSIX .[:blank:]
é o mesmo que\s
.[:space:]
corresponde a um número maior de caracteres de espaço em branco do\s
que e parece ser equivalente a\_s
.[:alnum:]
aproxima\w
, mas não corresponde ao sublinhado (_
).Portanto, a coleção que você queria poderia ser escrita como
[[:blank:][:alnum:]_]
ou[[:space:][:alnum:]_]
.Eu não tenho verificado isso por meio de testes, mas está documentado no
:h regexp
,:h /character-classes
e:h /collection
.Nota sobre portabilidade: em outros mecanismos regex,
\s
normalmente é o mesmo que[:space:]
(ou\_s
) no Vim.fonte