В Vim класс символов \s
соответствует любому пробелу. Когда я использую эти специальные символы в группах, например, [\s\w]
он не соответствует ни одному пробелу или символу слова, он соответствует s
или w
.
Как использовать классы персонажей внутри групп?
regular-expression
Джон Х.К.
источник
источник
[[:space:][:alnum:]_]
может быть использован для приблизительного сбора\s
и\w
, хотя.Ответы:
Это не группа, это диапазон, и в Vim вы не можете использовать классы символов (хотя это возможно в других реализациях регулярных выражений, например, в Python ). Вместо этого вам придется использовать чередование :
или:
(или, то предложенное решение от Peter Lewerin ).
источник
\s
в классе символов. Реализация регулярного выражения в Vim сделала этот выбор, но другие реализации позволяют вам использовать[\s]
.В отличие от некоторых реализаций движков регулярных выражений, Vim, похоже, не поддерживает эту нотацию (
[\s\w]
) в коллекциях. Однако можно использовать выражения класса символов POSIX .[:blank:]
так же, как\s
.[:space:]
соответствует большему количеству пробельных символов, чем\s
делает, и кажется эквивалентным\_s
.[:alnum:]
приблизительно\w
, но не соответствует подчеркиванию (_
).Таким образом, коллекция, которую вы хотели, может быть записана как
[[:blank:][:alnum:]_]
или[[:space:][:alnum:]_]
.Я не проверил это путем тестирования, но документировано в
:h regexp
,:h /character-classes
и:h /collection
.Примечание о переносимости: в других движках регулярных выражений,
\s
как правило, совпадает с[:space:]
(или\_s
) в Vim.источник