Dans Vim, la classe de caractères \s
correspond à n'importe quel caractère d'espacement. Lorsque j'utilise ces caractères spéciaux dans des groupes, par exemple, [\s\w]
il ne correspond à aucun espace blanc ou caractère de mot, il correspond à s
ou w
.
Comment utilise-t-on les classes de caractères à l'intérieur des groupes?
regular-expression
John HK
la source
la source
[[:space:][:alnum:]_]
peut être utilisé pour approximer la collection de\s
et\w
, cependant.Réponses:
Ce n'est pas un groupe, c'est une plage et dans Vim, vous ne pouvez pas utiliser de classes de caractères (bien que cela soit possible dans d'autres implémentations regex, par exemple en python ). Vous devrez utiliser une alternance à la place:
ou:
(ou, la solution proposée par Peter Lewerin ).
la source
\s
dans une classe de caractères. L'implémentation d'expression régulière de Vim a fait ce choix, mais d'autres implémentations vous permettent d'utiliser[\s]
.Contrairement à certaines implémentations de moteurs d'expression régulière, Vim ne semble pas prendre en charge cette notation (
[\s\w]
) dans les collections. On peut cependant utiliser des expressions de classe de caractères POSIX .[:blank:]
est le même que\s
.[:space:]
correspond à un plus grand nombre de caractères d'espaces que le\s
fait, et semble être équivalent à\_s
.[:alnum:]
se rapproche\w
, mais ne correspond pas au trait de soulignement (_
).Ainsi, la collection que vous vouliez pourrait être écrite comme
[[:blank:][:alnum:]_]
ou[[:space:][:alnum:]_]
.Je ne l' ai pas vérifié en testant, mais il est documenté dans
:h regexp
,:h /character-classes
et:h /collection
.Remarque sur la portabilité: dans les autres moteurs d'expression régulière,
\s
est généralement le même que[:space:]
(ou\_s
) dans Vim.la source