W Vimie klasa znaków \spasuje do dowolnego znaku spacji. Kiedy używam tych znaków specjalnych w grupach, np [\s\w]. Nie pasuje do żadnego pojedynczego spacji lub znaku, pasuje slub w.
Jak używać klas postaci w grupach?
W Vimie klasa znaków \spasuje do dowolnego znaku spacji. Kiedy używam tych znaków specjalnych w grupach, np [\s\w]. Nie pasuje do żadnego pojedynczego spacji lub znaku, pasuje slub w.
Jak używać klas postaci w grupach?
Odpowiedzi:
To nie jest grupa, to zakres, aw Vimie nie można używać klas postaci (chociaż jest to możliwe w innych implementacjach wyrażeń regularnych, np. W pythonie ). Zamiast tego musisz użyć alternacji :
/\(\w\|\s\)
lub:
/\v(\s|\w)
(lub rozwiązanie zaproponowane przez Petera Lewerina ).
\sw klasie znaków. Zdarza się, że implementacja wyrażeń regularnych Vima dokonała tego wyboru, ale inne implementacje pozwalają na użycie [\s].
W przeciwieństwie do niektórych implementacji mechanizmów wyrażeń regularnych, Vim nie obsługuje tej notacji ( [\s\w]) w kolekcjach. Można jednak użyć wyrażeń klasy znaków POSIX .
[:blank:]jest taki sam jak \s.[:space:]dopasowuje większą liczbę białych znaków niż \srobi i wydaje się być równoważne \_s.[:alnum:]jest przybliżona \w, ale nie pasuje do podkreślenia ( _).Tak więc kolekcję, którą chciałeś, można zapisać jako [[:blank:][:alnum:]_]lub [[:space:][:alnum:]_].
Nie zweryfikowano testując to, ale to jest udokumentowane :h regexp, :h /character-classesoraz :h /collection.
Uwaga dotycząca przenośności: w innych silnikach wyrażeń regularnych \sjest zwykle taki sam, jak [:space:](lub \_s) w Vimie.
[[:space:][:alnum:]_]może być użyty do przybliżenia kolekcji\si\w.